2012-05-30 63 views
0

我有這樣如何重塑data.frames在列表中?

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,CD,作爲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 

我想generete一個新列到這些data.frames爲A,B,c和d。如何實現這一目標?

回答

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