apply 계열 함수들
apply( ) |
lapply( ) |
적용 : 배열, 행렬 (벡터 적용 안됨!) 결과 : 벡터, 배열, 리스트 방향 : 1-행, 2-열 / apply(data, 방향, 함수)
# sum 함수 sum(1:10) # matrix 행렬 d <- matrix(1:9, ncol = 3) d #행렬에 sum함수 적용 apply(d, 1, sum) apply(d, 2, sum) #iris 데이터 이용 head(iris) apply(iris[,1:4], 2, sum) # 위에랑 같음, colSums 많이 사용 colSums(iris[, 1:4]) # 컬럼이 1개일 경우 그냥 sum함수에 적용 sum(iris[,2]) |
적용 : 벡터, 리스트 결과 : 리스트 lapply(x, 함수) / x : 벡터, 리스트, 데이터 프레임
#입력은 벡터 형태, 출력은 리스트 형태 result <- lapply(1:3, function(x){x*2}) result
#출력을 벡터로 변환 unlist(result) # 입력이 리스트 형태 x <- list(a=1:3, b=4:6)
# 입력이 프레임 형태 lapply(iris[, 1:4], mean) # 리스트를 데이터 프레임으로 변환 # unlist를 통해 벡터로 변환, matrix를 통해 변환은 as.data.frame으로 프레임 변환 >q<-as.data.frame(matrix(unlist(lapply(iris[,1:4], mean)), ncol = 4, byrow = T)) >names(q) <- names(iris[,1:4]) >q # do.call이용 # matrix, unlist 대신 do.call과 cbind이용! data.frame(do.call(cbind,lapply(iris[,1:4],mean))) |
sapply( ) |
tapply( ) ????? |
적용 : 벡터, 리스트
# lapply와 비슷하지만 결과가 list가 아님 x<-sapply(iris[,1:4], mean) # 결과를 as,data.frame으로 바꾸기 위해서는 전치행렬 필요 as.data.frame(t(x)) head(y) | 적용 : 벡터 데이터를 특정 기준으로 묶은 후 함수 적용 결과 : 함수 적용한 결과가 반환 # tapply(데이터, 색인, 함수) # 1부터 10까지의 숫자가 있고 이들이 모두 한 그룹에 속해 있을때 각 그룹에 속한 데이터의 합 tapply(1:10, rep(1, 10), sum) # 짝수, 홀수별의 합 tapply(1:10, 1:10 %% 2 == 1, sum) # iris데이터에서 Species별 Sepal.Length의 평균 tapply(iris$Sepal.Length, iris$Species, mean) |
maaply( ) | |
적용 : 여러개의 백터, 여러개의 리스트 결과 : 여러 데이터를 함수의 인자로 적용 sapply( )의 확장된 버전 |
'학부 정리 > 4학년' 카테고리의 다른 글
[4학년 - 빅데이터기술] R프로그래밍 (0) | 2018.04.22 |
---|---|
[4학년 - 빅데이터기술] R프로그래밍 (0) | 2018.04.22 |
[4학년 - 빅데이터기술] R프로그래밍 (0) | 2018.04.21 |
[4학년 - 빅데이터기술] R프로그래밍 (0) | 2018.04.21 |
[4학년 - 빅데이터기술] R프로그래밍 (0) | 2018.04.21 |