5

データセットのリストを読み込んで、これを n と呼びました。私がやりたいことは、n からデータ セットのサブセットを取得し、それらを R で行バインドすることです。行こうとするとrbind(n)、実際に要素を配置する代わりに、データ セットのすべての名前のデータ フレームが表示されます。互いの下にある各データセット。私がやりたいことは、共通の名前を共有するデータ セットのサブセットをバインドすることです。たとえば、18 個のデータ セットが「4」で始まります。そして、これらすべてを結び付けたいと思います。これを行う簡単な方法はありますか?

4

2 に答える 2

11

あなたがしたいことはrbind(n[[1]],n[[2]],...)と同じではありませんrbind(n)

これを書き出す必要はありません。これを使用do.callして作成および実行できます。call

 do.call(rbind, n)

これにより、必要なコマンドが実行されます。ただし、これは遅いことで有名です

パッケージから使用rbindlistdata.tableて、同じことをはるかに高速に実行できます

 library(data.table)

 rbindlist(n)

名前がで始まる要素のみが必要な場合4

rbindlist(n[grep(names(n), pattern = '^4')])
于 2013-02-25T02:45:24.010 に答える
1

多くのファイルを集約しようとするとrbind.fill、plyr パッケージの関数が必要になる場合があります (同等の data.table があるかどうかはわかりません)。

ll <- list(a=data.frame(x=1,y=2,z=1),
         b= data.frame(x=2,y=3),
         c=data.frame(x=3:4,y=5))

library(plyr)
Reduce(rbind.fill,ll[c('a','b')])   ## subset by list names and 
                                    ## apply recursively using Reduce
  x y  z
1 1 2  1
2 2 3 NA
于 2013-02-25T03:31:42.790 に答える