我从来没有找到这个问题的满意答案。假设我有一个功能:
foo <- function(a,b,c) {
...
}
a
是一个包含许多data.frame
个对象的列表
b
是一个包含特殊数据类的列表(来自库ppp
的类spatstat
,如果有帮助的话)。
c
是一个整数。
我希望通过该功能推送列表:
result <- llply(a, foo, b,c)
b
中列表项的名称对应于列表a
中data.frames中的“type”列。所以在函数foo
内我可以快速做到:
id <- which(names(b) == unique(a$type))
baseline_pattern <- b[[id]]
将b中的每个基础空间模式与a中的右侧data.frame匹配。 b中约有10个项目,a中有1000个项目。遗憾的是,这不起作用,因为llply
(或一般lapply
)尝试在a
时间推送一个列表项,即使对于参数列表b
和两行与b
中的正确列表项匹配的代码与正确的数据帧失败,因为该函数不再具有整个列表b
。有没有办法解决这个问题?
在紧要关头,我可以创建另一个列表(有效地组合a
和b
),其中每个列表项本身就是一个长度为2的列表,其中包含data.frame
和相应的点模式宾语。但是这将导致1000个冗余副本(并且使得在群集上运行此操作效率低得多)。
更新:我打算将其转换为mclapply
以在群集上运行此功能。 mapply
我不能这样做(除非有mcmapply
)。
答案 0 :(得分:1)
我还没有完全醒过来,但听起来你想mapply
使用MoreArgs=list(b, c)
。