Una semplice guida per capire le funzioni apply() in R

Una guida completa per comprendere le funzioni apply() in R

Impara come utilizzare queste funzioni utili una volta per tutte

Foto di Kelly Sikkema su Unsplash

Introduzione

Inizierò questo post dicendo che lavoro quotidianamente con i linguaggi R e Python. Onestamente, trovo più facile e intuitivo il modo in cui le funzioni apply sono utilizzate in Python.

Pensando al motivo di ciò, penso che sia perché in Python non ci sono molte opzioni. Il linguaggio R presenta molte opzioni diverse, la famiglia di funzioni “apply” come mi piace chiamarle.

Ricordo di aver letto da qualche parte qualcuno che diceva di andare sempre direttamente ai loop per risolvere un problema perché non riescono mai a ricordare cosa fanno ciascuna delle funzioni “apply” e quale sarebbe la versione più adatta da utilizzare per quel caso.

Bene, spero che questo tipo di problemi finisca dopo questo post. È mia intenzione che chi legge questo articolo lo termini con una buona comprensione della famiglia di funzioni, e di come e quando utilizzarle.

Per svolgere gli esercizi, creiamo velocemente un data frame di esempio, senza troppi criteri. Un ID, il nome del prodotto, la quantità venduta e l’importo in dollari per due periodi diversi.

# Crea il data framedtf <- data.frame(  id = 1:100,  product= sample(c('prodotto A', 'prodotto B', 'prodotto C', 'prodotto D'), size=100, replace=T),  qty = as.integer( rnorm(100, 10, 2) ),  amt = rnorm(100, 1280, 300),  amt2 = rnorm(100, 1280, 300))[OUT]:     id   product qty    amt   amt21     1 prodotto A   9  954.1 1418.52     2 prodotto B  12 1606.9  877.73     3 prodotto D   7 1241.6 1433.54     4 prodotto A  11 1413.2 1203.85     5 prodotto B  10 1623.3 1451.1

Non ci dilunghiamo oltre, immergiamoci.

Funzioni

La famiglia di funzioni “apply” in R è composta da 4 funzioni principali: apply(), lapply(), sapply() e tapply().

apply( )

La funzione apply() dà il nome alla famiglia. È probabilmente la più diretta da utilizzare. Questa funzione applica la stessa funzione a tutti gli elementi di una riga o di una colonna. Ecco la sintassi.

apply(X, MARGIN, FUN)

Applica alla matrice X, sulle righe (1) o…