我想在mapply中将函数名称作为参数传递:
f2 <- function(a, b) a + b^2
f <- function(a, b, func) func(a, b)
f(1, 3, f2) ## returns 10
mapply(f2, 1:2, 3) ## returns [1] 10 11
mapply(function(a, b) f(a, b, f2), 1:2, 3) ## returns [1] 10 11
mapply(f, 1:2, 3, f2) ## fails
最后一次mapply
调用会产生错误
Error in dots[[3L]][[1L]] : object of type 'closure' is not subsettable
有什么办法吗?
mapply
假定您要遍历在第一个函数之后传递的所有向量。但是您想f2
为每个迭代使用相同的值。您可以使用MoreArgs=
参数来做到这一点
mapply(f, 1:2, 3, MoreArgs=list(func=f2))
您不会对3遇到相同的问题,因为R将执行向量循环以扩展3c(3,3)
以匹配与相同的长度c(1,2)
。R中的函数没有相同的隐式回收行为。但是,如果您希望该值始终保持不变,则最好将其放在MoreArgs
参数中
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句