2012-04-05 86 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)