我有一个像这样的列表
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中添加一个新列。怎么做到这一点?
答案 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