18.2 lapply()
함수
lapply()
함수는 다음과 같은 간단한 일련의 작업을 수행합니다.
- 리스틀 반복하며 해당 리스트의 각 요소에 반복적으로 적용합니다.
- 리스트의 각 요소에 함수를 적용합니다(사용자가 지정한 함수).
- 결과로 리스트를 반환합니다 (
lapply()
함수의l
은 “list
”를 나타냅니다).
lapply()
함수의 형식은 다음과 같습니다.
lapply(X, FUN, ...)
x
: 리스트 개체입니다.FUN
: 적용하는 함수입니다....
: 함수에 전달되는 다른 인수를 위한 것입니다.
예를 들기 위해 4 개의 요소로 구성되는 리스트를 먼저 생성하겠습니다. 그리고 이 리스트의 요소별 평균을 구해 보겠습니다.
# 4 개의 요소로 구성되는 리스트를 생성합니다.
<- list(item1 = 1:4,
data item2 = rnorm(10),
item3 = rnorm(20, 1),
item4 = rnorm(100, 5))
# 리스트의 각 요소의 평균을 구합니다.
lapply(data, mean)
## $item1
## [1] 2.5
##
## $item2
## [1] 0.2699883
##
## $item3
## [1] 1.383788
##
## $item4
## [1] 5.090595
위는 각 리스트 항목이 단순히 숫자형의 벡터인 간단한 예를 들고 있습니다. 그러나 데이터 프레임이 포함된 리스트를 생각해 볼 수 있습니다. 각 리스트의 항목에 반복적으로 적용하여 데이터 프레임에 대한 항수를 수행해 보겠습니다. 이 경우 lapply()
함수 내에 apply
함수를 삽입할 수도 있습니다.
예를 들어, 다음은 R의 내장 beaver
데이터 세트에 대한 리스트를 만듭니다. lapply()
함수는 두 리스트 항목을 각각 반복하고 apply()
함수를 사용하여 두 리스트 항목의 열 평균을 계산하겠습니다. 더 쉽게 읽을 수있는 출력을 제공하기 위해 apply()
함수를 round()
함수로 묶어 주었습니다.
# 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