r - 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)存储在内存中。
解决方案
在这里我们可以使用do.call
withmapply
或Map
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)))
推荐阅读
- javascript - 保护/混淆 JavaScript API 请求
- odoo - 来自字段的 X2Many 中的日历视图
- vba - 在每个单元格的现有公式末尾附加一个 sumproduct
- python - mezzanine 4.2.3 有要求 django<1.11,>=1.8,但是你会有不兼容的 django 2.0.2
- android - 在 Android 中实现切片
- java - 如何合并/聚合两个具有 List 的 java 对象
作为一名成员? - php - 为什么=!似乎是 php 中的合法条件?
- python - 如何使用在 python3.5.1 上运行的自定义包。我想在 python2.7 上运行的项目中使用
- encryption - AES 中的密钥验证
- chatbot - 将新词识别为 rasa nlu 中的意图