如何重塑列表中的data.frames?

时间:2012-05-30 11:36:27

标签: r reshape transpose reshape2

我有一个像这样的列表

A <- data.frame(a = c(1, 2), b = c(3, 4))
B <- data.frame(c = c(1, 2), d = c(3, 4))
g <- list(var1 = A, var2 = B)

生产

> g
$var1
  a b
1 1 3
2 2 4

$var2
  c d
1 1 3
2 2 4

现在我要转置像这样的列表元素

lapply(g, function(x) data.frame(t(x)))

但是这会产生a,b,c d,作为不是我想要的rownames

> lapply(g, function(x) data.frame(t(x)))
$var1
  X1 X2
a  1  2
b  3  4

$var2
  X1 X2
c  1  2
d  3  4

我想在a,b,c和d这些data.frames中添加一个新列。怎么做到这一点?

1 个答案:

答案 0 :(得分:1)

第1点:如果您要转置数据,则很可能意味着您应该使用数组,而不是data.frames。

但是,如果真的是您想要做的,那么只需在列名中cbind()

lapply(g, function(x) as.data.frame(cbind(colnames(x), t(x))))
$var1
  V1 V2 V3
a  a  1  2
b  b  3  4

$var2
  V1 V2 V3
c  c  1  2
d  d  3  4