지금까지 설명한 sapply( )의 사용 예에서 FUN은 1개 값을 반환했다. 예를 들어, mean 함수의 반환 값은 1개 값이다. 이 경우 sapply( )의 결과는 이들 값을 모은 벡터가 된다. 하지만 sapply( )에 인자로 주어진 함수의 출력이 길이가 1보다 큰 벡터들이라면 sapply( )는 행렬을 반환한다. 다음 예에서는 아이리스의 숫자형 값들에 대해 각 값이 3보다 큰지 여부를 판단한다. sapply( )에 넘긴 FUN의 반환 값이 길이가 1보다 큰 벡터기 때문에 sapply( )의 수행 결과는 행렬이다.
> y <- sapply(iris[, 1:4], function(x) { x > 3 }) > class(y) [1] "matrix" > head(y) Sepal.Length Sepal.Width Petal.Length Petal.Width [1,] TRUE TRUE FALSE FALSE [2,] TRUE FALSE FALSE FALSE [3,] TRUE TRUE FALSE FALSE [4,] TRUE TRUE FALSE FALSE [5,] TRUE TRUE FALSE FALSE [6,] TRUE TRUE FALSE FALSE ...
sapply( )는 한 가지 타입만 저장 가능한 데이터 타입인 벡터 또는 행렬을 반환하므로 sapply( )에 인자로 준 함수 FUN의 반환 값에 여러 가지 데이터 타입이 섞여 있으면 안 된다. 만약 각 컬럼에 대해 수행한 함수의 결과 데이터 타입이 서로 다르다면, 리스트를 반환하는 lapply( )나 리스트 또는 데이터 프레임을 반환할 수 있는 plyr 패키지(5장에서 설명)를 사용해야 한다.