我有一个data.table my.data.table
和一个字符向量i
(长度为1),对应于my.data.table
的colname。使用i
,我想将my.data.table
的相应列提取为不属于data.table
类或data.frame
的向量。
我该怎么做?
> my.data.table <- data.table(a=1:2,b=2:3)
> i <- "a"
> class(my.data.table[,i,with=FALSE])
[1] "data.table" "data.frame"
> as.vector(my.data.table[,i,with=FALSE]) ##does not work
a
1: 1
2: 2
> is.vector(as.vector(my.data.table[,i,with=FALSE])) ##strange behavior
[1] FALSE
>
我认为有一种方法可以使用with=FALSE
中的eval(i, <env>)
和j
进行此操作,但我无法理解。
答案 0 :(得分:6)
其中任何一个都适用于您的示例,但两者中的第二个通常更有用。
my.data.table[[i]]
# [1] 1 2
my.data.table[,i,with=FALSE][[1]]
# [1] 1 2