Menu
Coddy logo textTech

lapply et sapply

Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 32 sur 64.

lapply(x, f) appelle f sur chaque élément de x et renvoie les résultats dans une liste, un élément par entrée :

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

Sortie :

[1] 3
[1] 9

sapply() fait la même chose et simplifie le résultat : lorsque chaque appel renvoie une valeur, vous obtenez un vecteur simple au lieu d’une liste :

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

Sortie :

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

Avec un vecteur de caractères, sapply() nomme les résultats d’après les entrées. Ajoutez USE.NAMES = FALSE pour obtenir un vecteur simple :

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

Sortie :

   tea coffee 
     3      6 
[1] 3 6

Ces fonctions remplacent la boucle qui construit un résultat, un élément à la fois. Les deux versions ci-dessous calculent le nombre de voyelles de chaque mot :

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))

Résultat :

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

Défi

Facile

Complétez vowel_counts(words). Retournez une ligne par mot, banana: 3, avec le nombre de voyelles (a, e, i, o, u) dans le mot. Utilisez sapply() pour compter les voyelles de tous les mots.

Le code fourni lit les mots sous la forme d’une ligne de mots en minuscules séparés par des virgules et affiche chaque ligne retournée.

Essayez vous-même

vowel_counts <- function(words) {
  # Écrivez votre code ici
  character(0)
}

# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(vowel_counts(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur R en ligne