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