3

私はこのような要素のリストを持っています

[[1]]
[1] 9.623571 5.334566 7.266597 6.510794 4.301958

[[2]]
[1] 9.693326 9.015892 1.266178 8.547392 4.326199

そして私はそれを次のようなデータフレームに変換したいと思います:

V1       V2       V3       V4       V5
9.623571 5.334566 7.266597 6.510794 4.301958
9.693326 9.015892 1.266178 8.547392 4.326199

したがって、リストのエントリ内の同じ位置にあるすべての要素は、同じ列にマージされます。

結果は次のようになるため、「rbind」に関連するものである必要があります。

rbind(list[[1]],list[[2]]...)

しかし、リストのすべてのエントリにそれを適用する方法がわかりません。これに光を当てていただければ幸いです。

事前にどうもありがとうございました。

ティナ。

4

5 に答える 5

7

まだ誰もこれについて言及していないので:

 library(data.table)
 rbindlist(yourList)

とても早い。

于 2013-03-24T20:39:21.847 に答える
6

これを試して:

as.data.frame(do.call(rbind, l))

どこ、l <- list(1:5, 6:10)

#   V1 V2 V3 V4 V5
# 1  1  2  3  4  5
# 2  6  7  8  9 10
于 2013-03-24T20:23:00.993 に答える
2

あなたが求めているものを取得するために使用sapplyします。例として...

x <- list( 1:10 , letters[1:10])
as.data.frame( t( sapply(x , rbind) ) )

#     V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#   1  1  2  3  4  5  6  7  8  9  10
#   2  a  b  c  d  e  f  g  h  i   j
于 2013-03-24T20:23:24.137 に答える
2

私はこれが追加のパッケージを使用していることを知っていますが、私は通常plyrreshape2私の道にあります。

library(plyr)
x <- list( sample(1:10,10) , sample(1:10,10))
ldply(x) # list 2 data.frame

  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1  3  8  6  2 10  9  7  5  1   4
2  8 10  3  4  2  5  1  7  6   9

リストに名前が付いている場合は特に便利です。

names(x) <- c("hello","goodbye")
ldply(x) 

      .id V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   hello  3  8  6  2 10  9  7  5  1   4
2 goodbye  8 10  3  4  2  5  1  7  6   9

reshape2を使用すると、data.frameをggplot2ですばやくプロットできるものにすばやく再形成することもできます。

library(reshape2)
melt(ldply(x),c(".id"))

       .id variable value
1    hello       V1     3
2  goodbye       V1     8
3    hello       V2     8
4  goodbye       V2    10
5    hello       V3     6
6  goodbye       V3     3
7    hello       V4     2
8  goodbye       V4     4
9    hello       V5    10
10 goodbye       V5     2
11   hello       V6     9
12 goodbye       V6     5
13   hello       V7     7
14 goodbye       V7     1
15   hello       V8     5
16 goodbye       V8     7
17   hello       V9     1
18 goodbye       V9     6
19   hello      V10     4
20 goodbye      V10     9

これらのソリューションはどれも、非常に大きなデータセット(テストされていない仮定)に対して特に高速ではありませんが、小さなデータセット(<10,000行)を操作する場合に非常に役立ちます。

于 2013-03-24T20:38:31.917 に答える
0

リストの要素を一緒に使用Reduceします。rbind

l <- list (a=c(9.623571, 5.334566, 7.266597, 6.510794, 4.301958),
           b=c(9.693326, 9.015892, 1.266178, 8.547392, 4.326199))
# rbind the elements of the list.
Reduce(rbind, l)
于 2013-03-24T20:26:26.553 に答える