lapply e funzioni anonime
Scrivere funzioni e poi usarle dentro lapply() è già un bel traguardo! Ma definire funzioni da usare una sola volta è un po’ eccessivo, no? Ecco perché in R puoi usare le cosiddette funzioni anonime.
Hai visto che in R le funzioni sono oggetti a sé stanti. Questo significa che non sono legate automaticamente a un nome. Quando crei una funzione, puoi usare l’operatore di assegnazione per darle un nome. È però perfettamente possibile non assegnarle alcun nome. Questa si chiama funzione anonima:
# Funzione con nome
triple <- function(x) { 3 * x }
# Funzione anonima con la stessa implementazione
function(x) { 3 * x }
# Usa una funzione anonima dentro lapply()
lapply(list(1,2,3), function(x) { 3 * x })
split_low è già definito per te.
Questo esercizio fa parte del corso
R intermedio
Istruzioni dell'esercizio
- Trasforma la prima chiamata a
lapply()in modo che usi una funzione anonima che faccia la stessa cosa. - Allo stesso modo, converti la seconda chiamata a
lapplyper usare una versione anonima della funzioneselect_second(). - Rimuovi entrambe le definizioni di
select_first()eselect_second(), perché non servono più.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# split_low has been created for you
split_low
# Transform: use anonymous function inside lapply
select_first <- function(x) {
x[1]
}
names <- lapply(split_low, select_first)
# Transform: use anonymous function inside lapply
select_second <- function(x) {
x[2]
}
years <- lapply(split_low, select_second)