我想以编程方式访问data.table中的一个列,该列名为" X201804_QTY",但我没有成功。也许有人可以帮忙?谢谢。
#test data
library(data.table)
data <- data.table(test = 1:10, X201804_QTY = 11:20)
#create column name programmatically
col <- paste0(make.names(format(as.Date("2018-04-30"), "%Y%m")),"_QTY")
#not working
data[, .(test, col)]
data[, .(test, col), which = FALSE]
data[, c("test", col)]
data[, c("test", col), which = FALSE]
data.table version: 1.10.4-3
答案 0 :(得分:3)
从data.table
版本1.10.2开始,您不再需要with = FALSE
,您可以使用..
作为简写:
data[, ..col]
# X201804_QTY
#1: 11
#2: 12
#3: 13
#4: 14
#5: 15
#6: 16
#7: 17
#8: 18
#9: 19
#10: 20
如果您在开发版本(1.10.5)中,要选择col
和test
,您可以选择:
data[,c(..cols, "test")]
否则我相信你现在必须这样做:
cols2 <- c(cols, "test")
data[, ..cols2]
考虑使用此功能可能是一个好主意,因为在data.table
新闻(https://github.com/Rdatatable/data.table/blob/master/NEWS.md)中他们说:
请更改为使用..前缀,在接下来的几年内,我们将开始正式弃用并删除with =参数
答案 1 :(得分:1)
是
data[, col, with = FALSE]
# ^^^^
不是which
。当然,data[, c("test", col), with = FALSE]
也会起作用。
X201804_QTY
1: 11
2: 12
3: 13
4: 14
5: 15
6: 16
7: 17
8: 18
9: 19
10: 20
答案 2 :(得分:1)
这也应该:
data[, .SD, .SDcols = c("test", col)]