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