使用 rbindlist 堆疊多個表
R 中常見的副詞是這樣的:
你不應該有一堆相關的表格,如
DT1
,DT2
,…,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 中讀取一堆表格然後堆疊它們 。