vapply() c. sapply()
Dans le dernier exemple, sapply() n'a pas réussi à simplifier parce que l'élément date de market_crash2 avait deux classes (POSIXct et POSIXt). Remarquez toutefois qu'aucune erreur n'a été levée! Si une fonction que vous aviez écrite s'attendait à ce que sapply() retourne un vecteur simplifié, cela prêterait à confusion.
Pour tenir compte de cela, il existe une fonction apply plus stricte appelée vapply(), qui contient un argument supplémentaire, FUN.VALUE, où vous pouvez préciser le type et la longueur de la sortie qui doit être retournée chaque fois que votre fonction appliquée est appelée.
Si vous vous attendiez à ce que la valeur de retour de class() soit un vecteur de caractères de longueur 1, vous pouvez le préciser avec vapply() :
vapply(market_crash, class, FUN.VALUE = character(1))
dow_jones_drop date
"numeric" "Date"
D'autres exemples de FUN.VALUE pourraient être numeric(2) ou logical(1). market_crash2 est de nouveau défini pour vous.
Cette activité fait partie du cours
R intermédiaire pour la finance
Instructions de l’exercice
- Utilisez encore
sapply()pour trouver laclass()des éléments demarket_crash2. Remarquez qu'il retourne une liste et non une erreur. - Utilisez
vapply()surmarket_crash2pour trouver laclass(). IndiquezFUN.VALUE = character(1). Cela devrait échouer comme prévu.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Market crash with as.POSIXct()
market_crash2 <- list(dow_jones_drop = 777.68,
date = as.POSIXct("2008-09-28"))
# Find the classes with sapply()
___
# Find the classes with vapply()
___