私は、この質問に対する満足のいく答えを見つけたことがありません。関数があると仮定します:
foo <- function(a,b,c) {
...
}
a
data.frame
多くのオブジェクトを含むリストです
b
特別なクラスのデータを含むリストです (ppp
ライブラリのクラスspatstat
が役立つ場合)。
c
は整数です。
そして、その関数を介してリストをプッシュしたい:
result <- llply(a, foo, b,c)
のリスト項目の名前は、 listb
の 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
1 つのリスト項目をプッシュしようとし、正しいリスト項目と正しいデータ フレームを一致させる 2 行のコードが失敗するため、これは機能しません。リスト全体。これを回避する方法はありますか?a
b
b
b
ピンチでは、別のリストを (事実上 と を組み合わせa
てb
) 作成することもできます。ここで、各リスト項目自体はdata.frame
と に対応するポイント パターン オブジェクトを含む長さ 2 のリストです。ただし、これにより、何千もの冗長コピーが発生します (また、クラスターでこの操作を実行する効率が大幅に低下します)。
更新mclapply
:これをクラスターで実行するように変更する予定です。でそれを行うことはできませんmapply
(がある場合を除くmcmapply
)。