2014-09-02 54 views
0

我使用rbind將多個數據框附加到更大的數據框中。我想將數據框的名稱添加爲新的列「name」。使用數據框名稱作爲列名

n = c(2, 3, 5) 
s = c("aa", "bb", "cc") 
d1 = data.frame(n, s)  

n = c(2, 3, 5) 
s = c("ax", "bx", "cx") 
d2 = data.frame(n, s) 

rbind(d1, d2) 

我希望看到一個以「d1」和「d2」作爲變量的新列。我在大量數據集上做這件事情,儘管這個例子很簡單,但最終的prdoct會爲我節省很多時間。 Thx

+0

'do.call(rbind,MGET(C( 「D1」, 「D2」)))'讓你關閉。我很確定這個問題是重複的。 – A5C1D2H2I1M1N2O1R2T1 2014-09-02 17:09:11

+0

'list(d1 = d1,d2 = d2)' – 2014-09-02 17:10:41

+0

感謝您將我指向正確的方向@anando。那裏的答案很好。 – 2014-09-02 17:20:37

回答

0

我相信你正在尋找好的'deparse(substitute())這裏的詭計。在下面,我修改了您的代碼,爲每個data.frame添加了一個附加列,其中只包含data.frame本身的名稱。

n = c(2, 3, 5) 
s = c("aa", "bb", "cc") 
d1 = data.frame(n, s) 
d1$name <- deparse(substitute(d1)) 

n = c(2, 3, 5) 
s = c("ax", "bx", "cx") 
d2 = data.frame(n, s) 
d2$name <- deparse(substitute(d2)) 

d3 <- rbind(d1, d2) 

當你把它們合併在一起所產生的data.frame看起來像

!> d3 
    n s name 
1 2 aa d1 
2 3 bb d1 
3 5 cc d1 
4 2 ax d2 
5 3 bx d2 
6 5 cx d2 
+0

'rep_len(ls(pattern =「d(1 | 2)」),2 * nrow(d1))' – 2014-09-02 17:42:46

相關問題