使用 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 中读取一堆表格然后堆叠它们