是否可以选择 data.table 的一列并返回向量?在基数 R 中,参数drop=TRUE就可以解决问题。例如,
library(data.table)
dat <- as.data.table(iris)
dat[,"Species"] # returns data.table
dat[,"Species", drop=TRUE] # same
iris[, "Species", drop=TRUE] # a factor, wanted result
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点data.table?
编辑: dat[,Species] 方法很好,但是我需要一个可以在变量中传递列名的方法:
x <- "Species"
dat[,x, drop=TRUE]
Run Code Online (Sandbox Code Playgroud)
对于data.frame,默认为 ,drop = TRUE而在data.table,内部完成时则相反。根据?data.table
drop - data.table 从未使用过。不使用。它需要在这里,因为 data.table 继承自 data.frame。
为了获得相同的行为,我们可以[[通过传递字符串来提取列
identical(dat[["Species"]], iris[, "Species"])
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)
或者
dat$Species
Run Code Online (Sandbox Code Playgroud)
通过使用[[or $,它暂时提取vector也绕过了data.table开销