1. 학습
  2. /
  3. 강의
  4. /
  5. 금융을 위한 R 중급

Connected

연습 문제

vapply() vs. sapply()

이전 예시에서 sapply()가 단순화에 실패한 이유는 market_crash2의 date 요소가 두 개의 클래스(POSIXct와 POSIXt)를 가지고 있었기 때문이에요. 하지만 오류는 발생하지 않았죠! 만약 여러분이 작성한 함수가 sapply()가 단순화한 벡터를 반환하리라고 기대했다면, 이는 혼란스러울 수 있어요.

이를 보완하기 위해 보다 엄격한 적용 함수인 vapply()가 있어요. vapply()에는 추가 인수 FUN.VALUE가 있어, 적용되는 함수가 호출될 때마다 반환되어야 하는 출력의 타입과 길이를 지정할 수 있어요.

class()의 반환값이 길이가 1인 문자 벡터라고 ‘기대’한다면, vapply()로 다음과 같이 지정할 수 있어요:

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

FUN.VALUE의 다른 예로는 numeric(2)나 logical(1) 등이 있어요. market_crash2는 다시 준비되어 있어요.

지침

100 XP
  • sapply()를 다시 사용해 market_crash2 각 요소의 class()를 확인해 보세요. 오류가 아니라 리스트를 반환하는 점에 주목하세요.
  • vapply()를 market_crash2에 적용해 class()를 구해 보세요. FUN.VALUE = character(1)을 지정하세요. 적절하게 실패해야 해요.