더북(TheBook)

5.6.3 vapply

sapply는 다루기 쉽고 편하지만, 이 점이 반대로 독이 될 수도 있다. 다음과 같이 리스트를 입력해 보자.

> x <- list(c(1, 2), c(2, 3), c(1, 3))

x 안의 숫자들을 제곱한 값을 원소로 하는 수치형 벡터를 얻고자 할 때 sapply는 자동으로 결과 구조를 데이터에 맞게 조정한다.

> sapply(x, function(x) x ^ 2)
     [,1] [,2] [,3]
[1,]    1    4    1
[2,]    4    9    9

하지만 입력 데이터에 실수나 변형이 있다면 sapply() 함수는 이것까지 조용히 허용하여 예측하지 못한 결과를 초래하기도 한다. 예를 들어 x의 마지막 요소에 잘못해서 숫자 하나가 더 들어갔다고 하자.

> x1 <- list(c(1, 2), c(2, 3), c(1, 3, 3))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.