더북(TheBook)

5.6.4 mapply

lapply()sapply() 함수는 한 벡터의 요소에 따라 반복적인 반면, mapply() 함수는 여러 벡터에서 반복적이다. 다시 말해 mapplysapply의 다변량 버전이라고 할 수 있다.

> mapply(function(a, b, c) a * b+ b * c+ a * c,
+     a = c(1, 2, 3), b = c(5, 6, 7), c = c(-1, -2, -3))
[1] -1 -4 -9

이 반복 함수에서는 스칼라 값뿐만 아니라 다중 요소 벡터까지도 결과가 될 수 있다. mapply() 역시 sapply()처럼 자동으로 결과를 단순화한다.

> df <- data.frame(x = c(1, 2, 3), y = c(3, 4, 5))
> df
     x    y
1    1    3
2    2    4
3    3    5
> mapply(function(xi, yi) c(xi, yi, xi+ yi), df$x, df$y)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    3    4    5
[3,]    4    6    8
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.