按位置从data.table中提取一列作为vector

如何从data.table中提取一列作为vector的位置? 下面是我尝试过的一些代码片段:

DT<-data.table(x=c(1,2),y=c(3,4),z=c(5,6)) DT # xyz #1: 1 3 5 #2: 2 4 6 

我想要使​​用列位置得到这个输出

 DT$y #[1] 3 4 is.vector(DT$y) #[1] TRUE 

用列位置获得这个输出的其他方法

 DT[,y] #[1] 3 4 is.vector(DT[,y]) #[1] TRUE 

这不给一个向量

 DT[,2,with=FALSE] # y #1: 3 #2: 4 is.vector(DT[,2,with=FALSE]) #[1] FALSE 

这两个不起作用:

 DT$noquote(names(DT)[2]) # Doesn't work #Error: attempt to apply non-function DT[,noquote(names(DT)[2])] # Doesn't work #[1] y 

这不会给一个向量:

 DT[,noquote(names(DT)[2]),with=FALSE] # Not a vector # y #1: 3 #2: 4 is.vector(DT[,noquote(names(DT)[2]),with=FALSE]) #[1] FALSE 

data.tableinheritance自类data.frame 。 因此,它是内部list (列向量),可以这样处理。

 is.list(DT) #[1] TRUE 

幸运的是,列表子集,即[[ ,非常快速,与[ ,package data.table不同,它没有为它定义一个方法。 因此,您可以简单地使用[[通过索引提取:

 DT[[2]] #[1] 3 4