18.3 sapply()
함수
sapply()
함수는lapply()
와 유사하게 작동합니다. 유일한 실제적인 차이점은 함수가 반환하는 값입니다. sapply()
함수는 가능하면 lapply ()
함수의 결과를 단순화하려고 합니다. 기본적으로sapply()
함수는 입력에서lapply()
를 호출하고 다음의 알고리즘을 적용합니다.
- 모든 요소의 길이가 1 인 리스트로 결과가 나오면 벡터를 반환합니다.
- 모든 요소가 동일한 길이 (> 1)의 벡터인 리스트로 결과가 나오면 행렬을 반환합니다.
- 위와 같은 단순화를 수행할 수 없는 경우에는 리스트를 반환합니다.
lapply()
함수와 sapply()
함수의 차이점을 설명하기 위해 beaver
데이터가 있는 리스트를 사용하는 앞의 예를 사용하여 살펴 보겠습니다.
# R에 내장된 beaver 데이터 세트를 리스트로 변형합니다.
<- list(beaver1 = beaver1,
beaver_data 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
# 각 리스트 항목의 평균을 구하여 결과를 단순화합니다.
<- sapply(beaver_data, function(x) round(apply(x, 2, mean), 2))
bea.result class(bea.result) # 행렬을 반환합니다.
## [1] "matrix" "array"