Segui il canale Telegram
Max 3 mess. al giorno (cos'è?)
Ultimi post del blog
Video e tutorial
Pagine aggiornate
Formazione
Ricerca sociale con R (il libro)
Di solito, le funzioni personalizzate vengono scritte dall'utente al solo scopo di semplificare l'uso di funzioni impiegate in attività di routine, o per evitare di ripetere lo stesso comando più di due o tre volte all'interno di uno script. Molte delle funzioni del pacchetto LabRS sono nate in questo modo.
All'interno di un progetto di analisi dei dati, è meglio avere un file di script con le funzioni personalizzate, separato da quello con il codice dell'analisi. All'inizio di quest'ultimo, si inserirà il comando `source()`, ad esempio: `source(funzioni.R)`. In questa maniera, le funzioni verranno caricate esattamente come quando si carica un pacchetto.
Vedi anche Funzioni
Prendiamo ad esempio due semplici funzioni, `nmiss()` e `nval()`. In casi come questi, la funzione personalizzata viene creata allo scopo di digitare più rapidamente comandi già di loro piuttosto semplici, come ad esempio quello per avere il numero dei casi mancanti (in questo caso una variabile):
sum(is.na(MYSLID$Lingua))
La funzione ha questa forma (è possibile visualizzare le funzioni caricate con il comando `View()`):
nmiss <- function(x)
, quindi nmiss(x)
;MYSLID$Lingua
) con la lettera x
.`nval()`, che restituisce il numero dei casi mancanti, ha la stessa struttura:
Vediamo come usare gli argomenti prendendo ad esempio la funzione `percent()`. In questo caso, il comando “normale” che ci permette di calcolare le percentuali per una tabella a doppia entrata, è:
round(prop.table(tab3, margin = 2) * 100, digits = 1)
Che produce le percentuali di colonna (`margin = 2`) con un decimale (`digits = 1`) di una tabella. La funzione è:
percent <- function(x, digits = 8, margin = NULL) { (round (prop.table(x, margin) * 100, digits)) }
L'oggetto di cui calcolare le percentuali è `x`. Gli argomenti vengono dichiarati in `function(x, digits = 8, margin = NULL)`:
digits = 8, margin = NULL
);Possiamo però anche impostare una funzione in modo che i valori degli argomenti siano fissi. In questo caso, non li dichiareremo. Consideriamo ad esempio la funzione `expdata()`, che serve a esportare un dataframe in un file csv con le impostazioni di lingua italiana:
expdata <- function(x, file, ...) { write.table(x, file, dec = ",", sep = ";", na = "", row.names = FALSE, ...) }
x
(l'oggetto da esportare) e file
(il nome del file di esportazione);write.table()
— quelli che servono ad esportare il file con il formato corretto — sono impostati all'interno della funzione: essi sono dunque fissi e non sono più modificabili dall'utente.Ho scritto la funzione in questo modo, per non sbagliare, oltre che per non fare continuamente copia-incolla dei comandi.
In ` function(x, file, \ldots)` troviamo dei “puntini di sospensione”, ripetuti in `write.table(x, file, dec = ",", sep = ";", na = "", row.names = FALSE, \ldots)`: in questo modo, la funzione eredita gli argomenti di `write.table()`, senza necessità di dichiararli.