使用 rbindlist 堆疊多個表

R 中常見的副詞是這樣的:

你不應該有一堆相關的表格,如 DT1DT2,…,DT11。按名稱迭代讀取和分配物件是混亂的。解決方案是一個資料表列表!

這樣的清單看起來像

set.seed(1)
DT_list = lapply(setNames(1:3, paste0("D", 1:3)), function(i)
  data.table(id = 1:2, v = sample(letters, 2)))

$D1
   id v
1:  1 g
2:  2 j

$D2
   id v
1:  1 o
2:  2 w

$D3
   id v
1:  1 f
2:  2 w

另一個觀點是,你應該將這些表儲存為一個表,通過堆疊它們。這很簡單,使用 rbindlist

DT = rbindlist(DT_list, id="src")

   src id v
1:  D1  1 g
2:  D1  2 j
3:  D2  1 o
4:  D2  2 w
5:  D3  1 f
6:  D3  2 w

使用 data.table 語法時,這種格式更有意義,其中按組操作是常見且簡單的。

為了更深入一點, Gregor 的答案可能是一個很好的起點。當然還要看看 ?rbindlist。還有一個單獨的例子,涵蓋從 CSV 中讀取一堆表格然後堆疊它們