Recent Posts
Stats & AI tech blog - '일단 시도함'
[R] apply function (apply, sapply, lapply, mapply, vapply) 본문
Programming/R
[R] apply function (apply, sapply, lapply, mapply, vapply)
justdoit ok? 2023. 11. 23. 13:531. apply
행 단위 또는 열 단위 연산을 가능하게 한다.
input 데이터로 모두 같은 타입의 변수형을 가진 배열(Array), 매트릭스(Matrix), 데이터 프레임(Dataframe)이 가능하다.
연산결과는 매트릭스 또는 벡터 형태로 출력된다.
* 행 단위, 열 단위 평균 구하기
# calculate row mean
apply(data, 1, mean)
# calculate column mean
apply(data, 2, mean)
2. sapply
for문을 대체하여 주로 쓰이며, 연산 결과는 벡터 또는 행렬 형태로 출력된다.
sapply( , simplify = F) 인 경우 또는 input 데이터가 길이가 다른 리스트인 경우, lapply( ) 와 동일하게 리스트 형태로 출력된다.
* 특정 열의 데이터 타입 변경
# change datatype to factor
data[,c(1:4)]<- sapply(data[,c(1:4)], as.factor)
3. mapply
sapply와 비슷하지만 여러 개의 인자를 사용할 수 있다. 다른 apply함수들과 다르게, 함수를 첫번째로 작성해야한다.
* 두 개의 인자로 비교 검정 수행
# mann-whitney test with two variables
mapply(wilcox.test, df1[,c(1:4)], df2[,c(1:4)])
4. lapply
연산 결과는 리스트 형태로 출력한다. 리스트의 인자는 데이터의 수 만큼 생성되며, 각 인자의 길이가 달라도 상관없다.
* 모델 적합 후 결과를 리스트 형태로 저장
result <- lapply(data[,c(1:4)], function(var){
model <- glm(y ~ var, data=data)
summary(model)
Estimate <- coef(summary(model))[,'Estimate'][-1]
P.value <- coef(summary(model))[,'P.value'][-1]
result <- cbind(Estimate, P.value)
})
5. vapply
sapply와 유사하지만 출력 양식을 지정할 수 있다.
* summary() 출력 양식 지정
# summary table
data[,c(1:4)]<- vapply(data[,c(1:4)], summary, c("Min." = 0, "1st Qu." = 0, "Median" = 0, "Mean" = 0, "3rd Qu." = 0, "Max." = 0))
'Programming > R' 카테고리의 다른 글
[R] Logistic Regression Probability Curve (0) | 2023.12.24 |
---|---|
[R] Diagnostic Test (진단 테스트) (2) 진단 도구 간 성능 비교 (0) | 2023.12.12 |
[R] Diagnostic Test (진단 테스트) : Sensitivity, Specificity, Accuracy (민감도, 특이도, 정확도) (0) | 2023.12.08 |
[R] 자주 쓰는 단축키 (0) | 2023.11.24 |
[R] Baseline Demographic Characteristics (기술통계량) (0) | 2023.11.21 |