我想知道如何在dt给定字符向量的data.table中确定列的类w.
可重复的例子:
dt <- data.table(matrix(1:10, 2))
w <- "V1"
Run Code Online (Sandbox Code Playgroud)
当您直接按名称指定列时,它将返回向量,以便您可以获取其类:
> dt[,V1]
[1] 1 2
> class(dt[,V1])
[1] "integer"
Run Code Online (Sandbox Code Playgroud)
但是,将其指定为字符向量,而是返回单列data.table:
> dt[,w,with=FALSE]
V1
1: 1
2: 2
> class(dt[,w,with=FALSE])
[1] "data.table" "data.frame"
Run Code Online (Sandbox Code Playgroud)
我有点想要采用以下解决方案,但肯定有更好的方法:
dt[,eval(parse(text=paste0("class(",w,")")))]
Run Code Online (Sandbox Code Playgroud)
所以有两个问题:
classdata.table环境中的调用获得的速度?sapply( myDataFrame, class)?Fra*_*ank 19
这些似乎以你想要的方式工作:
class(dt[[w]])sapply(dt,class)此外,做2,然后子集为1 : sapply(dt,class)[w].