ComeçarComece de graça

vapply() vs. sapply()

No último exemplo, sapply() não conseguiu simplificar porque o elemento date de market_crash2 tinha duas classes (POSIXct e POSIXt). Perceba, porém, que nenhum erro foi lançado! Se uma função que você tivesse escrito esperasse que sapply() retornasse um vetor simplificado, isso seria confuso.

Para lidar com isso, existe uma função apply mais rígida chamada vapply(), que contém um argumento extra, FUN.VALUE, no qual você pode especificar o tipo e o comprimento da saída que deve ser retornada sempre que sua função aplicada for chamada.

Se você esperava que o valor de retorno de class() fosse um vetor de caracteres de comprimento 1, pode especificar isso usando vapply():

vapply(market_crash, class, FUN.VALUE = character(1))
dow_jones_drop           date 
     "numeric"         "Date"

Outros exemplos de FUN.VALUE podem ser numeric(2) ou logical(1). market_crash2 já está definido para você.

Este exercício faz parte do curso

R Intermediário para Finanças

Ver curso

Instruções do exercício

  • Use sapply() novamente para descobrir a class() dos elementos de market_crash2. Perceba como ele retorna uma lista e não um erro.
  • Use vapply() em market_crash2 para descobrir a class(). Especifique FUN.VALUE = character(1). Isso deve falhar de forma adequada.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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()
___
Editar e executar o código