使用列名或列位置的向量选择data.table的列,而不使用“ with = F”

我需要选择data.table中带有列名或位置向量的特定列。

library(data.table)
DT <- data.table(cbind(A=rnorm(50),B=rnorm(50),C=rnorm(50),D=rnorm(50)))

索引列的“ A”和“ C”以这种方式很好地工作。

DT[,c("A","C")]

但是如果我指定一个变量并尝试为其编制索引,则会失败。

mycols <- c("A","C")
DT[,mycols]

我被迫使用with=FALSE,但我不想这样做,因为with=FALSE将DT视为data.frame,并且失去了data.table的所有性能优势(速度)。

我的问题是。为什么data.table以前一种方式接受字符向量,而不能接受后者?是否有解决方案可以保留data.table的性能优势?

谢谢

gshj2003 回答:使用列名或列位置的向量选择data.table的列,而不使用“ with = F”

一个选项是使用双点

DT[,..mycols]
#          A           C
#1:  0.1188208 -0.17328827
#2: -0.5622505  0.84231231
#3:  0.8111072 -1.59802306
#4:  0.7968823  2.08468489
# ...

或在.SDcols

中指定
DT[,.SD,.SDcols = mycols]

否则with = FALSE作为帖子中提到的OP

本文链接:https://www.f2er.com/3142227.html

大家都在问