Mi stavo chiedendo se esistesse un modo per forzare una funzione ad accettare solo determinati tipi di dati, senza doverli controllare all'interno della funzione; o, questo non è possibile perché il controllo dei tipi di R viene eseguito in fase di runtime (al contrario di quei linguaggi di programmazione, come Java, dove il controllo dei tipi viene eseguito durante la compilazione)?Forzare specifici tipi di dati come argomenti a una funzione
Per esempio, in Java, è necessario specificare un tipo di dati:
class t2 {
public int addone (int n) {
return n+1;
}
}
In R, una funzione simile potrebbe essere
addone <- function(n)
{
return(n+1)
}
ma se un vettore è fornita, un vettore lo faranno (ovviamente) essere restituito. Se si desidera solo un singolo intero di essere accettato, allora è l'unico modo per fare per avere una condizione all'interno della funzione, lungo le linee di
addone <- function(n)
{
if(is.vector(n) && length(n)==1)
{
return(n+1)
} else
{
return ("You must enter a single integer")
}
}
Grazie,
Chris
Come punto di stile del codice, nel caso in cui non si abbia un numero scalare, probabilmente si vuole lanciare un errore (con 'stop' o' stopifnot') o dare un avvertimento (con 'warning') piuttosto di una semplice stringa. –