【发布时间】:2020-05-08 11:35:50
【问题描述】:
我想在我的 data.table 中添加一个列表。让我们考虑一下这个data.table:
dt = data.table(id = 1:3)
lst <- list()
lst[[2]] <- cbind(a=10:12, b=5:7)
dt[-nrow(dt), lst:=lst]
dt
# id lst
#1: 1
#2: 2 10,11,12, 5, 6, 7
#3: 3
是否可以“取消列出”第一个,使 data.table 看起来像这样?
id a b
1.0: 1
2.0: 2
2.1: 2 10 5
2.2: 2 11 6
2.3: 2 12 7
3.0: 3
还有一个速度问题,因为我正在处理的数据包含数十亿行。
【问题讨论】:
-
为什么不使用 rbindlist(lst, idcol='id')[dt, on=.(id)]。虽然不是在电脑前测试。您可能会收到有关 use.names 的警告。可能需要根据您的需要设置为 TRUE 或 FALSE
-
得到这个:错误:“rbindlist(lst, idcol=‘"中的意外输入
-
如何决定将值附加到哪些行?为什么第 2 行是空的?
-
我想保留原来的dt,所以第2.0行只有id=2。第 2.1 到 2.3 行应包含列表中的数据。
-
rbind(dt, data.table(id=2, a=10:12, b=5:7), fill = TRUE)[order(id)]呢?
标签: r list data.table