Applica funzione con più argomenti in R

Manav Narula 30 marzo 2021
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.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

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

Articolo correlato - R Function