按位置从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