Menu
Coddy logo textTech

lapply e sapply

Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 32 di 64.

lapply(x, f) chiama f su ogni elemento di x e restituisce i risultati in una lista, un elemento per ogni input:

squares <- lapply(1:3, function(i) i^2)
print(length(squares))
print(squares[[3]])

Output:

[1] 3
[1] 9

sapply() fa la stessa cosa e semplifica il risultato: quando ogni chiamata restituisce un valore, ottieni un vettore semplice invece di una lista:

print(sapply(1:3, function(i) i^2))
print(sapply(c(4, 9, 16), sqrt))

Output:

[1] 1 4 9
[1] 2 3 4

Su un vettore di caratteri, sapply() assegna ai risultati i nomi degli elementi di input. Aggiungi USE.NAMES = FALSE per ottenere un vettore semplice:

words <- c("tea", "coffee")
print(sapply(words, nchar))
print(sapply(words, nchar, USE.NAMES = FALSE))

Output:

   tea coffee 
     3      6 
[1] 3 6

Queste funzioni sostituiscono il ciclo che costruisce un risultato un elemento alla volta. Entrambe le versioni qui sotto calcolano quante vocali contiene ciascuna parola:

words <- c("banana", "sky", "idea")
vowels <- function(w) sum(strsplit(w, "")[[1]] %in% c("a", "e", "i", "o", "u"))
counts <- c()
for (w in words) counts <- c(counts, vowels(w))
print(counts)
print(sapply(words, vowels, USE.NAMES = FALSE))

Output:

[1] 3 0 3
[1] 3 0 3
challenge icon

Sfida

Facile

Completa vowel_counts(words). Restituisci una riga per parola, banana: 3, con il numero di vocali (a, e, i, o, u) presenti nella parola. Usa sapply() per contare le vocali di tutte le parole.

Il codice fornito legge le parole in una riga separate da virgole, composte da parole in minuscolo, e stampa ogni riga restituita.

Provalo tu

vowel_counts <- function(words) {
  # Escribe tu código aquí
  character(0)
}

# Código de entrada/salida proporcionado: mantenlo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(vowel_counts(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore R online