如何在data.table中仅给指定列添加向量而无需指定其他列
在data.table中仅向指定列添加向量,无需手动指定其他列内容
示例输入
library(data.table) dat <- fread("A B C D one 2 three four two 3 NA one") vector_to_add <- c("five", "six")
期望输出
out <- fread("A B C D one 2 three four two 3 NA one NA NA five NA NA NA six NA")
需求
已知可通过rbind手动构造整行数据实现,但希望避免手动指定所有列;也不想用复制现有行设为NA再替换目标列的繁琐方法,寻求更简洁的解决方案。
解决方案
方法1:构造目标列的data.table后合并
利用data.table构造时未指定的列自动填充NA的特性,直接创建仅包含目标列的新data.table,再与原表合并:
new_rows <- data.table(C = vector_to_add) dat <- rbind(dat, new_rows, fill = TRUE)
方法2:使用rbindlist提升效率
针对大数据集,rbindlist比rbind性能更优,同样通过fill=TRUE参数自动补全缺失列的NA:
dat <- rbindlist(list(dat, data.table(C = vector_to_add)), fill = TRUE)
两种方法都无需手动定义其他列的内容,直接实现仅向指定列添加向量、其余列自动补NA的需求,比复制行再替换的方法更简洁高效。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

