首页 > 解决方案 > R:将 (m?)apply 与返回列表作为要应用的函数的参数的函数一起使用?

问题描述

我有两个参数的函数foo(a,b)。作为该函数的输入,我将使用combinations(10,2)gtools 库的每一行输出。我试图让它工作,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)存储在内存中。

标签: rlistapplymapply

解决方案


在这里我们可以使用do.callwithmapplyMap

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

或使用Map(返回 a list

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

作为一个可重现的例子,可以使用beta

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

推荐阅读