apply 함수
- for문 등 반복문 없이 짧은 코드로 빠르게 연산 가능하다.
- split -> apply -> combine 기능 제공, (데이터 분할 -> 함수 적용 -> 재결합)
apply 함수 유형
- apply 함수 유형에 따라, 입력 데이터(연산대상) 유형 / 결과 출력 데이터 유형 / 연산 단위 달라진다.
1) apply
input: array, matrix, dataframe(단 모든 컬럼이 같은 데이터 타입을 가져야함)
output:array, vector
rm(list=ls())
a <- matrix(1:12, nrow=4)
res1 <- apply(a, 1, sum) # 1: row 기준으로 연산
res2 <- apply(a, 2, sum) # 2: col 기준으로 연산
2) lapply
input: list, vector
output: list
* vector로 출력하려면 unlist 함수 사용하면 된다.
rm(list=ls())
b <- list(c(1,2,3), seq(1,9,2), seq(2,8,2))
res3 <- lapply(b, sum) # output data type: list
res4 <- unlist(res3) # output data type: vector
rm(list=ls())
res5 <- lapply(c(1,2,3), function(x) {x*2-1}) # 연산 대상: vector 바로 써주어도 된다.
# 1*2-1 = 1
# 2*2-1 = 3
# 3*2-1 = 5
3) sapply
input:
output: vector, matrix 또는 array
rm(list=ls())
b <- list(c(1,2,3), seq(1,9,2), seq(2,8,2))
res6 <- sapply(b, sum) # lapply + unlist 와 같은 결과
4) tapply
특징: 특정 기준에 따라 연산한다.
input
output
rm(list=ls())
c <- c(1, 11, 2, 22, 3, 33)
d <- rep(c(TRUE, FALSE), 3)
res11 <- tapply(c, c<=10, sum) # 조건에 부합: TRUE
res12 <- tapply(c, c(1,1,2,2,3,3), sum) # 입력값과 조건값 같은 위치 매칭
res13 <- tapply(c, d, sum) # 입력값과 조건값 같은 위치 매칭
res14 <- tapply(iris$Sepal.Length, iris$Species, mean)
rm(list=ls())
res14 <- tapply(iris$Sepal.Length, iris$Species, mean)
'데이터 처리 도구 > R' 카테고리의 다른 글
R 기초 / 제어문, 사용자 정의 함수 (0) | 2022.08.11 |
---|---|
R 기초 / 패키지 사용하기 (0) | 2022.08.10 |
R 기초 / 연산자 (0) | 2022.08.07 |