18.3 sapply() 함수

sapply() 함수는lapply()와 유사하게 작동합니다. 유일한 실제적인 차이점은 함수가 반환하는 값입니다. sapply() 함수는 가능하면 lapply () 함수의 결과를 단순화하려고 합니다. 기본적으로sapply() 함수는 입력에서lapply()를 호출하고 다음의 알고리즘을 적용합니다.

  • 모든 요소의 길이가 1 인 리스트로 결과가 나오면 벡터를 반환합니다.
  • 모든 요소가 동일한 길이 (> 1)의 벡터인 리스트로 결과가 나오면 행렬을 반환합니다.
  • 위와 같은 단순화를 수행할 수 없는 경우에는 리스트를 반환합니다.

lapply() 함수와 sapply() 함수의 차이점을 설명하기 위해 beaver 데이터가 있는 리스트를 사용하는 앞의 예를 사용하여 살펴 보겠습니다.

# R에 내장된 beaver 데이터 세트를 리스트로 변형합니다.
beaver_data <- list(beaver1 = beaver1, 
                    beaver2 = beaver2)

# 각 리스트 항목의 평균을 구하여 리스트로 반환합니다.
lapply(beaver_data, function(x) round(apply(x, 2, mean), 2))
## $beaver1
##     day    time    temp   activ 
##  346.20 1312.02   36.86    0.05 
## 
## $beaver2
##     day    time    temp   activ 
##  307.13 1446.20   37.60    0.62
# 각 리스트 항목의 평균을 구하여 결과를 단순화합니다.
bea.result <- sapply(beaver_data, function(x) round(apply(x, 2, mean), 2))
class(bea.result)                               # 행렬을 반환합니다.
## [1] "matrix" "array"