3

私は次のlistような0〜3のID番号を含むを持っています:

[[1]]
[1] 2125233 <NA>    <NA>

[[2]]
[1] 2009281 2380145 2931851

[[3]]
[1] 1517163 2836702 2506119

data frameこれを、要素番号がIDになり、要素の内容が次のような文字列/要素になるように変換するにはどうすればよいですか。

  id                   contents
   1             2125233 <NA>    <NA>
   2             2009281 2380145 2931851
   3             1517163 2836702 2506119
  ...                 .....

私は見てみましunlistたが、それはすべてを1つの長いベクトルに投げ込むだけです。

助言がありますか?

4

4 に答える 4

7
List <- list(c(123, NA, NA), c(1223, 4546,5656), c(4546,4646,464))
> List
[[1]]
[1] 123  NA  NA

[[2]]
[1] 1223 4546 5656

[[3]]
[1] 4546 4646  464

> data.frame(do.call(rbind, List))

    X1   X2   X3
1  123   NA   NA
2 1223 4546 5656
3 4546 4646  464
于 2012-09-25T16:24:42.673 に答える
5

Jilberが言及したアプローチdo.call(rbind...)は、おそらく最も一般的または直感的です(そして、次のアプローチよりも高速です)が、を使用したいのであれば、それほど遠くはありませんでした。unlist

秘訣はmatrix()、と組み合わせて使用​​し、行数をリストunlistの行数に設定することlengthです。

List <- list(c(123, NA, NA), c(1223, 4546,5656), c(4546,4646,464))
matrix(unlist(List), nrow = length(List), byrow = TRUE)
#      [,1] [,2] [,3]
# [1,]  123   NA   NA
# [2,] 1223 4546 5656
# [3,] 4546 4646  464

## Or, for a data.frame
data.frame(matrix(unlist(List), nrow = length(List), byrow = TRUE))
于 2012-09-25T17:23:02.103 に答える
4
library(plyr)
ldply(list_name)

> x <- c(1,2,3)
> foo <- list(x,x,x)
> foo
[[1]]
[1] 1 2 3

[[2]]
[1] 1 2 3

[[3]]
[1] 1 2 3

> ldply(foo)
  V1 V2 V3
1  1  2  3
2  1  2  3
3  1  2  3
于 2012-09-25T16:24:28.697 に答える
2

Rdata.framesは実際にはリストであり、リスト内の各ベクトルが列である場合、これは簡単な作業になります。

List <- list(c(123, NA, NA), c(1223, 4546,5656), c(4546,4646,464))
DF <- data.frame(List)

リストの各要素がベクトルの場合、Jilberによる表示として使用するdo.callrbind、上記を転置することができdata.frameます。

DF <- data.frame(t(DF))
于 2012-09-26T18:15:28.950 に答える