1

这个问题我一直没有找到满意的答案。假设我有一个功能:

foo <- function(a,b,c) {
...
}

a是一个包含许多data.frame对象的列表

b是一个包含特殊数据类的列表(如果有帮助,则ppp来自库的类)。spatstat

c是一个整数。

我想通过该功能推送一个列表:

result <- llply(a, foo, b,c) 

列表项的名称b对应于 list 中 data.frames 中的“type”列a。所以内部功能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。有没有办法解决?

在紧要关头,我可以创建另一个列表(有效地结合aand b),其中每个列表项本身就是一个长度为 2 的列表,其中包含data.frame和对应的点模式对象。但这将导致 1000 多个冗余副本(并使在集群上运行此操作的效率大大降低)。

更新:我打算把它变成一个mclapply在集群上运行它。我不能这样做mapply(除非有mcmapply)。

4

1 回答 1

1

我还没有完全醒来,但听起来你想用mapplywith MoreArgs=list(b, c)

于 2012-04-05T01:01:32.717 回答