R:将(m?)apply与返回列表作为要应用的函数的参数的函数一起使用吗?

时间:2020-04-26 15:45:51

标签: r list apply mapply

我具有两个自变量foo(a,b)的功能。作为此函数的输入,我将使用gtools库中combinations(10,2)输出的每一行。我尝试使其与mapply一起使用,并且对apply(combinations(10,2),1,foo)确实抱有很高的期望,但是我尝试执行的所有操作均抛出错误“参数b”丢失,没有默认值” 。如何在不将组合(10,2)存储在内存中并将其分割的情况下纠正此问题?我怀疑我缺少Vectorize的把戏。

对于一个简单的可复制示例,请使用beta(a,b)代替foo(a,b)

我非常想不要要做的事情是这样的:

a<-combinations(10,2)
mapply(foo,a[,1],a[,2])

因为我不想将组合(10,2)存储在内存中。

1 个答案:

答案 0 :(得分:1)

这里我们可以将do.callmapplyMap一起使用

do.call(mapply, c(FUN = foo, asplit(combinations(10, 2), 2)))

或与Map(返回list

do.call(Map, c(f = foo, asplit(combinations(10, 2), 2)))

作为可重现的示例,可以使用beta

do.call(Map, c(f = beta, asplit(combinations(10, 2), 2)))