我需要以向量的形式从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()
不起作用。
答案 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