如何选择名称为变量的data.table列

时间:2019-10-11 08:45:53

标签: r data.table

我想通过选择特定列对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)]

这确实有效,但是它不保留列名,因此我需要重命名该列(如果我通过变量选择更多列,则可能需要重命名多个列)。有没有一种优雅的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

添加, with = FALSE

dt <- data.table(x = 1:10, y = 11:20, z = 1:10)
col <- "x"
dt[, c(col, "y"), with=FALSE]