1.21 Funzioni

\(\mathsf{R}\) offre la possibilità di utilizzare un’enorme libreria di funzioni che permettono di svolgere operazioni complicate, quali ad esempio, il campionamento casuale. Esaminiamo ora con più attenzione le proprietà delle funzioni di \(\mathsf{R}\) utilizzando ancora l’esempio del lancio di un dado. Abbiamo visto in precedenza come il lancio di un dado possa essere simulato da R con la funzione sample(). La funzione sample() prende tre argomenti: il nome di un vettore, un numero chiamato size e un argomento chiamato replace. La funzione sample() ritorna un numero di elementi del vettore pari a size. Ad esempio

sample(die, 2, replace = TRUE)
#> [1] 3 4

Assegnando TRUE all’argomento replace specifichiamo che vogliamo un campionamento con rimessa.

Se volgiamo eseguire una serie di lanci indipendenti di un dado, eseguiamo ripetutamente la funzione sample() ponendo size uguale a 1:

sample(die, 1, replace = TRUE)
#> [1] 3
sample(die, 1, replace = TRUE)
#> [1] 2
sample(die, 1, replace = TRUE)
#> [1] 5

Come si fa a sapere quanti e quali argomenti sono richiesti da una funzione? Tale informazione viene fornita dalla funzione args(). Nel nostro caso

args(sample)
#> function (x, size, replace = FALSE, prob = NULL) 
#> NULL

ci informa che il primo argomento è un vettore chiamato x, il secondo argomento è chiamato size ed ha il significato descritto sopra, il terzo argomento, replace, specifica se il campionamento è eseguito con o senza reimmissione, e il quarto argomento, prob, assegna delle probabilità agli elementi del vettore. Il significato degli argomenti viene spiegato nel file di help della funzione. Si noti che agli ultimi due argomenti sono stati assegnati dei valori, detti di default. Ciò significa che, se l’utilizzatore non li cambia, verranno usati da . La specificazione replace = FALSE significa che il campionamento viene eseguito senza reimmissione. Se desideriamo un campionamento con reimmissione, basta specificare replace = TRUE (nel caso di una singola estrazione è ovviamente irrilevante). Ad esempio, l’istruzione seguente simula i risultati di 10 lanci indipendenti di un dado:

sample(die, 10, replace = TRUE)
#>  [1] 3 6 1 3 3 4 3 6 3 4

Infine, prob = NULL specifica che non viene alterata la probabilità di estrazione degli elementi del vettore. In generale, gli argomenti di una funzione possono essere oggetti come vettori, matrici, altre funzioni, parametri o operatori logici.

\(\mathsf{R}\) ha un sistema di help interno in formato HTML che si richiama con help.start(). Per avere informazioni su qualche funzione specifica, per esempio la funzione sample(), il comando da utilizzare è help(sample) oppure ?sample.