데이터 처리 도구/R

R 기초 / apply 함수

yourhm 2022. 8. 9. 15:50

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