단순화에 실패하는 경우
대화형으로 사용할 때는 sapply()가 아주 좋아요. 출력 유형을 추정해 단순화해 주는데, 보통은 문제가 없습니다. 하지만 함수를 작성할 때에는 sapply()가 안전한 선택이 아니에요. sapply()가 출력을 단순화하지 못하면 기본적으로 lapply()처럼 리스트를 반환합니다. 이렇게 되면 sapply()가 단순화된 벡터를 반환한다고 가정하고 만든 사용자 정의 함수가 망가질 수 있어요.
이제 2008년 증시 폭락에 대한 정보를 담은 리스트를 가지고 연습해 보겠습니다.
이 연습은 강의의 일부입니다
금융을 위한 R 중급
연습 안내
리스트 market_crash가 준비되어 있어요.
sapply()를 사용해market_crash의 각 원소에 대한class()를 확인하세요.
새로운 리스트 market_crash2가 만들어졌습니다. 차이점은 날짜를 만드는 방식에 있어요!
lapply()를 사용해market_crash2의 각 원소에 대한class()를 확인하세요.sapply()를 사용해market_crash2의 각 원소에 대한class()를 확인하세요.
market_crash2의 date는 클래스가 여러 개입니다. 왜 sapply()는 이를 단순화하지 못했을까요?
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Market crash with as.Date()
market_crash <- list(dow_jones_drop = 777.68,
date = as.Date("2008-09-28"))
# Find the classes with sapply()
___
# Market crash with as.POSIXct()
market_crash2 <- list(dow_jones_drop = 777.68,
date = as.POSIXct("2008-09-28"))
# Find the classes with lapply()
___
# Find the classes with sapply()
___