Indice
Funzioni
Le funzioni sono combinazioni di comandi che si applicano ad oggetti.
Le funzioni in R hanno la forma
funzione(x, arg, ...)
dove:
- x è l’oggetto (o gli oggetti) a cui la funzione si applica, il base al tipo e alla classe dell’oggetto stesso;
- solitamente sono presenti uno o più argomenti, che solitamente per-mettono di configurare opzioni.
Per utilizzare una funzione — ad esempio chisq.test
(test del chi quadrato) — dobbiamo conoscere i suoi argomenti e le sue opzioni:
args(chisq.test) function (x, y = NULL, correct = TRUE, p = rep(1/length(x), length(x)), rescale.p = FALSE, simulate.p.value = FALSE, B = 2000) NULL
Possiamo ottenere le stesse informazioni con il comando str()
str(chisq.test) function (x, y = NULL, correct = TRUE, p = rep(1/length(x), length(x)), rescale.p = FALSE, simulate.p.value = FALSE, B = 2000)
Per utilizzare correttamente le funzioni, è importante ricordare che:
- Il nome e l'ordine degli argomenti dipende dalla funzione (anche se molte funzioni utilizzano gli stessi argomenti);
- Non sempre è necessario specificare tutti gli argomenti della funzione: alcuni argomenti hanno un proprio valore di default, esplicitato nell'aiuto. Nell'esempio precedente,
correct = TRUE, rescale.p = FALSE, simulate.p.value = FALSE, B = 2000
sono valori di default;y=NULL
significa chey
può non essere indicato; l'unico argomento obbligatorio èx
. - L'ordine degli argomenti è importante solo quando si voglia (e sia possibile) omettere il loro nome. Nell'esempio precedente,
x
ey
devono essere inseriti per primi; gli altri argomenti hanno un nome, e possono essere inseriti in un ordine qualunque.
L'aiuto sulle funzioni
Inserire gli argomenti delle funzioni
Le parentesi
Le funzioni vengono annidate una nell’altra come in una normale espressione, con la differenza che le parentesi sono sempre tonde.
Consideriamo ad esempio la funzione round()
applicata a prop.table()
round( prop.table() )
Allo stesso modo naturalmente possono essere utilizzate, insieme ed “annidate”, più funzioni e comandi. In questo caso, round()
si applica a prop.table(
), che a sua volta si applica a table()
:
round(prop.table(table(turismo20$Posizione))*100, 2) Costa Interno Collina Montagna 79.80 12.12 8.08
Ovvero:
round( prop.table( table () ) )
Nel caso ci si dimenticasse di chiudere una parentesi, il prompt di R si trasformerebbe in un +:
round(prop.table(table(turismo20$Posizione)*100, 2) +
Inserendo la parentesi mancante, la riga di comando verrebbe eseguita. Se non fosse possibile inserirla — ad esempio perché non occupa l'ultima posizione — utilizzare il tasto ESC, per abbandonare la riga di comando.
Per semplificare l’uso di queste espressioni, si preferisce costruire prima degli oggetti con i risultati di una funzione, e poi applicare le altre funzioni agli oggetti stessi.
Inserire un vettore come argomento
Quando l'argomento di una funzione richiede più di una informazione, si deve utilizzare la notazione vettoriale:
L'opzione dnn
del comando table()
permette di assegnare delle etichette alle variabili.
dnn="Struttura ricettiva"
Se le variabili sono più di una (in una tabella a doppia entrata), si scriverà invece:
dnn=c("Struttura ricettiva", "Posizione geografica")
E dunque:
table(Tipo.di.struttura, Posizione, dnn=c("Struttura ricettiva", "Posizione geografica"))
Semplificare l'inserimento dell'argomento
Per semplificare la scrittura dell'esempio precedente, si può costruire un oggetto con i parametri desiderati
nomi<-c("Struttura ricettiva", "Posizione geografica")
e poi usarlo come argomento della formula:
table(Tipo.di.struttura, Posizione, dnn=nomi)
Funzioni personali
Come si scrivono
Come si usano
Le funzioni personali possono essere semplicemente inserite in un file di script (ad esempio “funzioni.R”), da caricare preferibilmente con il comando:
source("funzioni.R")
Troveremo le nostre funzioni all'interno dello spazio di lavoro.
Se inseriamo una funzione personale (o una funzione recuperata sul web) all'interno dello script dell'analisi, essa verrà caricata facendola girare, ovvero evidenziando le righe e eseguendo il comando “Run”.