我想通过选择特定列对data.table进行子集化。但是,我不想指定所有列名,而是想通过变量选择它们。
library(data.table)
dt <- data.table(x = 1:10, y = 11:20, z = 1:10)
col <- "x"
现在,我想做这样的事情:
dt2 <- dt[, c(col, "y")]
这应该与
相同dt[, c("x", "y")]
但是dt2是一个字符向量,包含值"x"
和"y"
我也尝试过使用列表对data.table进行子集设置
dt2 <- dt[, .(get(col), y)]
这确实有效,但是它不保留列名,因此我需要重命名该列(如果我通过变量选择更多列,则可能需要重命名多个列)。有没有一种优雅的方法可以做到这一点?
答案 0 :(得分:0)
添加, with = FALSE
dt <- data.table(x = 1:10, y = 11:20, z = 1:10)
col <- "x"
dt[, c(col, "y"), with=FALSE]