본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 153. 함수에 인자를 여러 조합으로 입력하는 방법 (mapply)

by 만다린망고 2023. 4. 7.
반응형

mapply 함수는 이해하기가 까다로운 함수입니다. 한번 이해하면 쉬운데 감을 잡는 것이 다른 apply 함수들 보다 어렵습니다. 

먼저 예시를 하나 봅시다. 

> mapply(rep,c(1,2,3),c(2,3,4))
[[1]]
[1] 1 1

[[2]]
[1] 2 2 2

[[3]]
[1] 3 3 3 3


mapply 가 어떤 역할을 하는지 감이 오시나요? 출력 결과가 리스트라는 것은 알 수 있습니다. 위 함수가 입력되면 R에서 어떤 일이 벌어지는지 알아봅시다. mapply 함수의 소스를 뜯어본 것은 아니라 순서는 약간 다를 수 있습니다. 위 함수가 입력되면 R에서는 아래와 같은 일이 벌어집니다. 

1) rep(1,2) 가 실행되어 리스트의 첫번째 원소로 들어갑니다.
2) rep(2,3) 이 실행되어 리스트의 두번째 원소로 들어갑니다.  
3) rep(3,4) 가 실행되어 리스트의 세번째 원소로 들어갑니다. 
4) 리스트가 출력됩니다. 

이해가 되시나요? mapply 는 함수를 먼저 입력하고 나서, 벡터나 리스트들을 이어서 입력합니다. 위에서는 함수 rep 를 입력하고 벡터 c(1,2,3) 과 c(2,3,4) 를 입력했습니다. rep 함수는 두가지 인자를 입력해주어야 합니다. rep(1,3) 과 같이 반복의 대상이 되는 값과, 반복의 횟수가 되는 값을 입력해야 합니다. mapply 함수가 작동하면 첫번째 벡터 c(1,2,3) 중에서 첫번째 값인 1이 rep 의 첫번째 인자로, 두번째 벡터 c(2,3,4) 중 첫번째 값인 2가 rep의 두번째 인자 자리에 입력됩니다. 따라서 rep(1,2)가 가장 먼저 실행됩니다. 그 다음은 rep(2,3)가 실행되고, 마지막으로 rep(3,4) 가 실행됩니다. 이것이 mapply 함수의 작동원리입니다. 

 

 

 

반응형

댓글