본문 바로가기

공부와 공부와 공부/R

6-4 apply계열 함수 - apply(), lapply(), sapply()

R에서 for while 함수 사용을 권장하지 않는다. 

for while은 처리해야할 것들, 즉 반복 횟수가 많아지면 실행하는데 많은 시간을 소요한다. 

따라서 반복 처리를 더 간단하게 하는 다른 함수를 사용하는데, 바로 apply()계열 함수 이다. 

 

apply계의 함수

apply(iris[,1:4],2,mean)

apply(iris[,1:4],1,mean)

 

는 아래 for 을 사용한 반복문과 동일하다.

 

for(i in 1:4){

  print(mean(iris[,i]))

}

 

lapply()

apply()와 유사하지만 결과가 List Format이므로 lapply()는 리스트 형태의 값에서 주로 사용한다. 

 

 

※무조건 컬럼 방향으로 나옴

 

lapply(iris[,1:4], mean)

 

abc<-list(mtcars[,1],mtcars[,2],mtcars[,3],mtcars[,4])

abc

lapply(abc, mean)

lapply(abc, mean)[[1]]

 

 

sapply()

실행결과를 벡터, 리스트로 선택 

 

sapply(iris[,1:4],mean) #결과가 vector

sapply(iris[,1:4],mean, simplify=F) #결과가 list

 

사용자 적의 함수를 적용하여 apply 함수 사용도 가능하다.

 

myfunc <- function(x){

  a<-max(x)

  b<-min(x)

  return(a-b)  #최대값과 최소값 차이 리턴

}

sapply(iris[,1:4],myfunc)

 

 

※위 자료는 K-MOOC 단국대학교 오세종 교수님의 R 데이터 분석 입문을 참고하였습니다