我知道这是使用额外的包,但我通常有plyr
并且reshape2
在我的路径中。
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
对于非常大的数据集(未经测试的假设),这些解决方案都不是特别快,但它们在处理较小的数据集(< 10k 行)时非常有用。