我有多个类似下面的列表。
a = c(1,2,3)
b = c(4,5,6)
c = c(7,8,9)
我知道我可以使用cbind.data.frame
创建一个3x3数据帧。但是,我想创建一个2列数据框,其中第1-3行在第1列中有a
,第4-6行有b
等等。它看起来像是手动创建的数据框从:
data.frame(c('a','a','a','b','b','b'), c(1,2,3,4,5,6))
答案 0 :(得分:4)
我们可以创建key/value
对list
元素,并使用stack
将其转换为2列数据集。 mget
获取list
中的字符对象名称的值,并将键作为对象名称。
stack(mget(c('a', 'b', 'c')))
# values ind
#1 1 a
#2 2 a
#3 3 a
#4 4 b
#5 5 b
#6 6 b
#7 7 c
#8 8 c
#9 9 c
答案 1 :(得分:3)
另一种选择是创建3x3 data.frame
和melt
:
library(reshape2)
melt(data.frame(a = c(1,2,3),b = c(4,5,6),c = c(7,8,9)))
# variable value
#1 a 1
#2 a 2
#3 a 3
#4 b 4
#5 b 5
#6 b 6
#7 c 7
#8 c 8
#9 c 9