CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Utilisez encore sapply() pour trouver la class() des éléments de market_crash2. Remarquez qu'il retourne une liste et non une erreur.
  • Utilisez vapply() sur market_crash2 pour trouver la class(). Indiquez FUN.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()
___
Modifier et exécuter le code