との機能 (のようなもの) を組み合わせた (今のところmapply
呼び出す)のバリアントを考え出そうとしています。つまり、未知の長さの関数と引数, , , ... のリストの場合、長さのリスト( はlist の長さ) を生成する必要があります。これは、の要素のすべての組み合わせに適用した結果です。リスト。xapply
expand.grid
mapply
FUN
L1
L2
L3
n1*n2*n3
ni
i
FUN
データフレームではなくリストのリストを生成するように機能した場合expand.grid
、それを使用できるかもしれませんが、リストは必ずしもデータフレームにうまく収まらないもののリストである可能性があることを念頭に置いています.
展開するリストがちょうど 3 つある場合、この関数は正常に機能しますが、より一般的な解決策に興味があります。(未使用ですが、単一のリストではなくネストされたリストを生成するFLATTEN
と想像できます...)FLATTEN=FALSE
xapply3 <- function(FUN,L1,L2,L3,FLATTEN=TRUE,MoreArgs=NULL) {
retlist <- list()
count <- 1
for (i in seq_along(L1)) {
for (j in seq_along(L2)) {
for (k in seq_along(L3)) {
retlist[[count]] <- do.call(FUN,c(list(L1[[i]],L2[[j]],L3[[k]]),MoreArgs))
count <- count+1
}
}
}
retlist
}
編集:結果を返すのを忘れました。combn
インデックスのリストを作成してそこから移動することで、これを解決できるかもしれません...