【发布时间】:2016-04-05 08:59:23
【问题描述】:
假设我有以下功能:
my.fun1 <- function(a,b,c){
a * c + b
}
如果我想用多个参数多次调用它,我可以这样做:
> my.fun1(1, 1, c(1:3))
[1] 2 3 4
> my.fun1(2, 2, c(1:3))
[1] 4 6 8
> my.fun1(3, 3, c(1:3))
[1] 6 9 12
但如果我使用 mapply 我会得到这个:
> mapply(my.fun1, c(1:3), c(1:3), c(1:3))
[1] 2 6 12
而不是想要的:
[[1]]
[1] 2 3 4
[[2]]
[1] 4 6 8
[[3]]
[1] 6 9 12
恕我直言,问题在于mapply 基本上将函数调用转换为:
> my.fun1(1, 1, 1)
[1] 2
>
> my.fun1(2, 2, 2)
[1] 6
>
> my.fun1(3, 3, 3)
[1] 12
如何将mapply 的最后一个参数直接传递给my.fun1,而不被视为mapply 的参数,而是传递给my.func1?
PS:我一直在 maplpy 调用中使用匿名函数。最接近的是get(基于建议here):
> x <- mapply(function(x, y){my.fun1(x, y, c(1:3))}, c(1:3), c(1:3))
> split(x, rep(1:ncol(x), each = nrow(x)))
$`1`
[1] 2 3 4
$`2`
[1] 4 6 8
$`3`
[1] 6 9 12
但我想这是丑陋的方法,必须有更好的方法。
【问题讨论】: