[R] apply 계열 함수
반응형
R에서는 벡터, 행렬 또는 데이터 프레임에 어떠한 임의의 함수를 적용하고 그 결과를 받기 위한 apply
계열 함수가 존재합니다. 이를 간단하게 정리해보았습니다.
함수 | 설명 |
---|---|
apply() |
array 또는 matrix에 주어진 함수를 적용한 뒤 그 결과를 vector, array, list로 반환 |
lapply() |
vector, list 또는 표현식에 함수를 적용하여 그 결과를 list로 반환 |
sapply() |
lapply() 와 유사하지만 결과를 vector, matrix 또는 array로 반환 |
tapply() |
벡터에 있는 데이터를 특정 기준에 따라 그룹으로 묶은 뒤 그룹마다 주어진 함수를 적용하고 그 결과를 반환 |
mapply() |
sapply() 의 확장버전으로, 여러 개의 vector 또는 list를 인자로 받아 적용 |
1. apply()
apply()
는 행렬의 행(row) 또는 열(column) 방향으로 특정 함수를 적용하는데 사용합니다.- x : array 또는 matrix
- MARGIN = 1이면 행 방향, MARGIN = 2이면 열 방향, MARGIN = c(1, 2)이면 행과 열 방향 모두를 의미
- FUN : 적용하고자 하는 함수
apply(x, MARGIN = c(1, 2), FUN)
- 1~9 값까지 할당되어 있는 행렬을 생성하고
apply()
함수를 적용해본 결과 다음과 같습니다.## [,1] [,2] [,3] ## [1,] 1 4 7 ## [2,] 2 5 8 ## [3,] 3 6 9
apply(mat1, MARGIN = 1, FUN = sum)
## [1] 12 15 18
apply(mat1, MARGIN = 2, FUN = mean)
## [1] 2 5 8
-
mat1 <- matrix(1:9, nrow = 3, ncol = 3) mat1
2. lapply()
- 쉽게 list와 apply를 합친 것이라고 생각하시면 됩니다.
lapply()
함수는 리스트를 반환합니다.- x : vector, list 또는 data.frame
- FUN : 적용하고자 하는 함수
lapply(x, FUN)
- 예시는 다음과 같습니다.
## [[1]] ## [1] 3 ## ## [[2]] ## [1] 4 ## ## [[3]] ## [1] 5
-
x <- 1:3 result <- lapply(x, function(x) {x + 2}) result
- 이렇게 list 형태로 반환되는 결과를 다시 벡터로 변환하고 싶다면
unlist()
함수를 이용할 수 있습니다.## [1] 3 4 5
-
unlist(result)
lapply()
함수는 list를 인자로도 받을 수 있습니다.## $a ## [1] 2 ## ## $b ## [1] 5
-
x <- list(a = 1:3, b = 4:6) lapply(x, FUN = mean)
3. sapply()
sapply()
는lapply()
와 유사하지만 list 대신 matrix, vector 등의 데이터 타입으로 결과를 반환시킬 수 있는 특징이 있습니다.- x : vector, list 또는 data.frame
- FUN : 적용하고자 하는 함수
sapply(x, FUN)
- 기본적으로 내장되어 있는
iris
데이터로 쉽게 예시를 들어 보겠습니다.## $Sepal.Length ## [1] 5.843333 ## ## $Sepal.Width ## [1] 3.057333 ## ## $Petal.Length ## [1] 3.758 ## ## $Petal.Width ## [1] 1.199333
sapply(iris[, 1:4], FUN = mean)
## Sepal.Length Sepal.Width Petal.Length Petal.Width ## 5.843333 3.057333 3.758000 1.199333
- 이와 같이
lapply()
함수를 list로 결과를 반환하지만sapply()
함수는 vector로 결과를 반환합니다.
- 이와 같이
-
lapply(iris[, 1:4], FUN = mean)
4. tapply()
tapply()
는 그룹별로 함수를 적용하기 위한apply()
함수라고 생각하시면 됩니다.- x : vector
- INDEX : factor형 변수(그룹)
- FUN : 적용하고자 하는 함수
tapply(x, INDEX, FUN)
- 이번에도 기본적으로 내장되어 있는
iris
데이터로 쉽게 예시를 들어 보겠습니다.## setosa versicolor virginica ## 5.006 5.936 6.588
-
tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = mean)
반응형
'Basic' 카테고리의 다른 글
[R] DescTools (0) | 2017.11.01 |
---|---|
[R] ggplot2 활용 데이터 시각화 예시 (0) | 2017.08.17 |
[R] 문자열 처리 (0) | 2017.07.12 |
[R] 추정 및 검정 (0) | 2017.07.12 |
[R] 상관 분석 (0) | 2017.07.07 |
TAGS.