본문 바로가기

기타/R Programming

R programming (studio) apply 함수(apply, lapply, sapply, tapply, mapply)

728x90

loop대신 훨씬 간단하게 반복적인 처리할 수 있는 함수, apply, lapply, sapply, tapply, mapply함수에 대해 알아보도록 하겠습니다.

 

apply 배열 또는 행렬에 주어진 함수를 적용

결과는 벡터, 배열, 리스트로 반환합니다.

아래와 같이 행렬을 만들어 적용할 수 있다.

apply(데이터, 1일경우 행 2일 경우 열, 함수)

for문을 사용해 구현하면 아래 코드보다 훨씬 복잡합니다.

lapply는 벡터, 리스트 또는 표현식에 함수를 적용, 결과가 리스트로 반환됩니다.

apply는 행과 열 인자를 받아야 하지만 lapply list나 표현식을 처리하기 때문에 없어도 됩니다.

두 번째 인자인 함수에 다른 인자가 필요하다면 함수를 쓰고 , 그 뒤에 인자를 넣어주면 됩니다.

sapply는 lapply와 유사합니다.

차이가 있다면 결과를 벡터, 행렬 또는 배열로 반환합니다.

 

tapply는 그룹으로 묶은 뒤 함수를 처리합니다.

자주 사용되는 iris데이터를 사용해 처리해보도록 하겠습니다.

첫 번째 인자로는 데이터가 벡터 형태로 들어가고 두 번째 인자로는 팩터 형태의 데이터, 세 번째는 함수가 들어갑니다.

tapply는 두번째 인자인  팩터 데이터를 기준으로 첫 번째 데이터를 묶고 함수를 처리합니다.

 

mapply는 sapply의 확장버전으로 여러 개의 인자를 받아 처리합니다.

여러 개의 input을 받아 처리할 수 있습니다.

rnorm은 세 개의 인자를 받아 처리하는 함수이다.

rnorm(난수의 개수, 평균, 표준편차) 이렇게 3가지 인자를 받아 평균과 표준편차를 따르는 난수들을 생성한다.

아래 코드는 100개의 난수를 평균 0, 표준편차 1로 생성하고, 100개의 난수를 평균 10, 표준편차 1로, 100개의 난수를 평균 100, 표준편차 1로 생성합니다.

다른 인자로 함수를 여러번 호출할 때는 mapply함수를 사용할 수 있습니다.

 

추가적으로 데이터 구조를 파악하는 데 도움이 되는 함수

str()에 대해 알아보도록 하겠습니다.

str( 데이터 이름)을 하면 아래와 같이 나오게 됩니다.

loop를 사용하면 코드가 복잡해집니다.

위와 같이 apply함수들을 사용하면 효율적 처리가 가능하지요.

꼭 사용해보시기 바랍니다 ㅎㅎ 감사합니다.

 

728x90