我想知道如何在dt
给定字符向量的情况下确定 data.table 中列的类w
。
可重现的例子:
dt <- data.table(matrix(1:10, 2))
w <- "V1"
当您直接按名称指定列时,它会返回向量,以便您可以获取其类:
> dt[,V1]
[1] 1 2
> class(dt[,V1])
[1] "integer"
但是,将其指定为字符向量,它会返回一列 data.table:
> dt[,w,with=FALSE]
V1
1: 1
2: 2
> class(dt[,w,with=FALSE])
[1] "data.table" "data.frame"
我已经找到了以下解决方案,但肯定有更好的方法:
dt[,eval(parse(text=paste0("class(",w,")")))]
所以两个问题:
- 是否有更好(更简洁)来获得单列的类(不放弃上述解决方案通过评估
class
data.table 环境中的调用而获得的速度? - 有没有办法获得所有列的类的向量,类似于
sapply( myDataFrame, class)
?