2014-02-06 32 views
1

我徹底搜索了SO,但我不得不說,搜索越來越困難。然而,對於大多數人來說,這是非常簡單的!按R中的列表ID合併data.table的列表

我的數據是這樣的:

library(data.table) 

dataX <- data.table(V1 = "Tuesday", a2012 = rnorm(1), a2011 = rexp(1,2)) 
dataY <- data.table(V1 = "Monday", a2012 = rnorm(1), a2011 = rexp(1,2),a2010 = rbinom(1,2,0.3)) 
data1 <- list(dataX, dataY) 
names(data1) <- c(123,456) 
ListData <- rep(data1,6) 

我data.tables的多個列表,我想將它們合併。這裏如何

如何通過ID合併多個data.tables列表?

這是我想獲得:

$`123` 

     V1  a2012  a2011 
1: Tuesday 0.4943128 0.1045589 
2: Tuesday -0.864036 0.2515042 
3: Tuesday -0.864036 0.2515042 
+2

我覺得這個問題不清楚。 'data1'中沒有「ID」。您顯然在工作區中更改了數據對象,並且現在希望我們登錄到您的計算機以提供幫助。在我的機器上,名稱(data1)返回:NULL。也許你只是在尋找'names <-'功能? –

+0

感謝您的關注。我認爲可以很容易地爲列表分配任何名稱/ ID。 – Maximilian

+0

您在您的帖子中生成數據的難度有多大?並顯示預期的產出?你可以編輯你的文章,讓事情更清楚嗎? – Arun

回答

2

這聽起來像通過合併,你實際上意味着rbind和希望:

rbindlist(ListData[names(ListData) == '123']) 

或者,如果你想這樣做了所有名稱:

lapply(unique(names(ListData)), 
     function(n) rbindlist(ListData[names(ListData) == n])) 
+0

太棒了。第二行是我以後的事。謝謝! – Maximilian