더북(TheBook)

5.6.2 sapply

결과를 담는 객체로 리스트가 항상 최선은 아니다. 때로는 결과를 단순한 벡터나 행렬 형태로 담고 싶을 때도 있다. sapply 함수는 구조에 따라 결과를 더 단순한 형태로 만들 수 있다.

1:10 벡터의 각 요소에 제곱을 계산하고자 한다. 물론 lapply를 사용하면 제곱 값을 갖는 리스트를 얻을 수 있을 것이다. 하지만 결과로 나오는 리스트는 각 요소가 숫자 하나를 의미하는 단일 벡터인 것에 비해서 너무 쓸데없이 덩치만 큰 느낌이다. 이때 이 결과를 하나의 벡터로 저장하고 싶을 수 있다.

> sapply(1:10, function(i) i ^ 2)
[1]   1   4   9   16   25   36   49   64   81   100

적용하는 함수가 각 요소에 대해 다중 요소 벡터를 결과로 반환한다면, sapply 함수는 각 결과 벡터를 열 벡터로 하는 행렬을 얻을 것이다.

> sapply(1:10, function(i) c(i, i ^ 2))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    2    3    4    5    6    7    8    9    10
[2,]    1    4    9   16   25   36   49   64   81   100
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.