r - 合并一个 data.table 和一个列表
问题描述
我想在我的 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(list(dt,
rbindlist(lapply(lst, as.data.table), idcol='id')),
use.names=TRUE, fill=TRUE)[order(id)]
输出:
id a b
1: 1 NA NA
2: 2 NA NA
3: 2 10 5
4: 2 11 6
5: 2 12 7
6: 3 NA NA
推荐阅读
- reactjs - 如何使用 reactjs 在列表中显示图像?
- python-3.x - 无法导入pynput
- c# - 比较现在的日期时间和日期时间添加分钟然后覆盖文本文件
- python - “ImportError:导入 _openmp_helpers 时 DLL 加载失败”?
- c++ - VS2017 中的错误 - LNK2019 无法解析的外部符号
- java - 在 Websphere 上使用 jackson-dataformat-xml
- java - CUCM 10.5 的 AXL Java UpdatePhoneReq 执行时没有错误,但不会更改电话
- r - 根据 Shiny App 的输入运行不同的数据
- xml - 在 Centos Laravel 上找不到类“DOMDocument”
- php - Axios 默认 URL 和带有 laravel 的参数