Applica funzione con più argomenti in R
Le funzioni sono essenziali in qualsiasi linguaggio di programmazione. Una funzione è un blocco di codice che può essere richiamato per eseguire una specifica operazione in programmazione.
In R, abbiamo funzioni incorporate e funzioni definite dall’utente. Possiamo anche applicare una funzione direttamente a una lista oa un vettore con uno o più argomenti.
In questo tutorial lavoreremo con i seguenti vettori e funzioni:
f1 <- function(v1,v2){
v1+v2
}
vec1 <- c(1,5,9)
vec2 <- c(2,7,6)
La funzione è relativamente semplice, aggiunge solo due elementi e abbiamo due vettori con tre elementi ciascuno.
In questo tutorial, lavoreremo con le funzioni sapply()
, lapply()
e mapply()
, dove applicheremo una funzione all’intero vettore e passeremo più parametri allo stesso, e passeremo il vettori alla funzione come parametri.
In situazioni in cui vogliamo applicare una funzione a un dato vettore o lista, possiamo usare lapply()
o sapply()
.
La funzione lapply()
restituisce una lista come output finale. Per esempio:
lapply(vec1,f1,5)
[[1]]
[1] 6
[[2]]
[1] 10
[[3]]
[1] 14
typeof(lapply(vec1,f1,5))
[1] "list"
Come puoi vedere, passiamo la funzione f1
a vec1 e passiamo un altro argomento 5, poiché la funzione accetta due argomenti, che semplicemente aggiunge 5 a tutti gli elementi.
La funzione sapply()
svolge la stessa funzione della funzione lapply()
ma è considerata più efficiente delle due poiché semplifica l’output e il risultato non è necessariamente una lista.
Il seguente frammento di codice mostra come:
sapply(vec1,f1,5)
[1] 6 10 14
typeof(sapply(vec1,f1,5))
[1] "double"
Un’altra interessante funzione disponibile è il mapply()
. Applica una funzione ai vettori che vengono passati come argomenti. La funzione viene applicata ai primi elementi dei vettori, ai secondi elementi e così via.
mapply(f1,vec1,vec2)
[1] 3 12 15
Si noti che con la funzione mapply()
siamo in grado di passare i vettori come più argomenti a una funzione poiché restituisce la somma degli elementi nella stessa posizione.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn