2012-04-05 69 views
1

我从来没有找到满意的答案来解决这个问题。假设我有一个函数:将列表参数传递给llply

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

a是包含许多data.frame对象

b一个列表(从库spatstatppp类,是否可以帮助任何)含有一类特殊的数据列表。

c是一个整数。

,我想通过这个函数推列表:

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

b的列表项目名称对应于data.frames列“类型”列表中a。因此,内部功能foo我可以很快的做:

id <- which(names(b) == unique(a$type)) 
baseline_pattern <- b[[id]] 

在B中的每个潜在的空间格局,在一个合适的data.frame匹配。 a中有大约10件b和1000件物品。不幸的是,这是行不通的,因为llply(或一般lapply)试图推动一个列表项目a时间,即使对于参数列表b和两行代码匹配正确的列表项b与正确的数据帧失败,因为功能不再具有整个列表b。有没有办法解决?

在紧要关头,我可以创建另一列表(有效地组合ab),其中每个列表项本身是用含有data.frame和对应点图案对象长度2的列表。但是这会导致数千个冗余副本(并且使群集上的这个操作效率低得多)。

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

+0

事实证明,在R 2.15.0中有一个'mcmapply'。升级时间...? – 2012-04-10 02:00:19

回答

1

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