IniziaInizia gratis

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

Visualizza il corso

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 lapply per usare una versione anonima della funzione select_second().
  • Rimuovi entrambe le definizioni di select_first() e select_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)
Modifica ed esegui il codice