5

与えられた3つ(またはnリスト):

one   <- list(a=1:2,b="one")
two   <- list(a=2:3,b="two")
three <- list(a=3:4,b="three")

この結果を得るためにcbind、リスト全体で各リストアイテムを表示するより効率的な方法は何でしょうか?n

mapply(cbind,mapply(cbind,one,two,SIMPLIFY=FALSE),three,SIMPLIFY=FALSE)

$a
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    3    4

$b
     [,1]  [,2]  [,3]   
[1,] "one" "two" "three"

これは、またはである場合nは問題なく機能しますが、すぐにばかげて複雑になります。これにはもっと効率的なバリエーションがありますか?私はSOについて同様の質問を見てきましたが、それらを適応させるのに苦労しました。23

4

3 に答える 3

7

and (の単純なラッパーでReduceあるMapMapmapply(..., SIMPLIFY = FALSE)

Reduce(function(x,y) Map(cbind, x, y),list(one, two,three))

ReduceRで関数型プログラミングの基本関数またはほとんどを使用する場合、通常は引数を渡すことができない...ため、通常、必要な処理を実行するために小さな無名関数を作成する必要があります。

于 2013-03-01T00:45:40.337 に答える
6

またはこのように:

mapply(cbind, one, two, three)

またはこのように:

mylist <- list(one, two, three)
do.call(mapply, c(cbind, mylist))
于 2013-03-01T00:53:03.343 に答える
2
sep.list <- unlist(list(one, two, three), recursive = FALSE)
lapply(split(sep.list, names(sep.list)), do.call, what = cbind)
于 2013-03-01T00:55:49.783 に答える