as.vector()在data.table对象上

时间:2018-07-09 12:27:51

标签: r vector data.table

我需要以向量的形式从data.table中提取一列。我了解$有效,而[]无效。但是,as.vector()在单一维度的data.table对象 上失败。

    library(data.table)
    dt <- iris
    setDT(dt)
    oneCol1 <- dt$Sepal.Length[1:100] # produces a vector of 100 elements, fine
    oneCol2 <- dt[1:100,1] # produces a DT 100 rows by 1 column. I understand limitation.
    v <- as.vector(oneCol2) 
    is.vector(v) # FALSE

文档说as.vector()“试图强制... x,R对象。”不过什么也没发生。 v仍然是DT对象。

当然可以使用第一种方法,但是我想知道为什么as.vector()不起作用。

1 个答案:

答案 0 :(得分:1)

数据框是列表。即使您选择了一行数据,它仍然被视为列表。

改用unlist:

 library(data.table)
dt <- iris
setDT(dt)
oneCol1 <- dt$Sepal.Length[1:100] # produces a vector of 100 elements, fine
oneCol2 <- dt[1:100,1] # produces a DT 100 rows by 1 column. I understand limitation.
t<-unlist(oneCol2)
is.vector(t) # true