2017-05-20 36 views
2

我想從data.table對象中提取列值,該對象使用變量指定列名稱。例如:通過引用從data.table中提取列作爲矢量

DT <- data.table(x = c(1, 2), y = c(3, 4), z = c(5, 6)) 
col <- "z" 

然後

> is.vector(DT[, col, with = F]) 
[1] FALSE 

因爲它返回一個data.table對象來代替。

我也試過:is.vector(DT[, (col), with = F])還有:is.vector(DT[, ..col])也有同樣的結果。我試過其他可能會產生錯誤。

直接使用變量名工作原理:

> is.vector(DT[, z]) 
[1] TRUE 

,我發現這個post,用它列位置,但不是引用使用名稱解決:

> is.vector(DT[[3]]) 
[1] TRUE 

我沒有找到一個在data.tabledocumentation的明確引用。我相信這是一個簡單的方法來做到這一點,但我沒有找到。

+0

參見http://stackoverflow.com/a/20043412/1412059 – Roland

+0

@Roland此溶液通過索引位置,現在我認識到,對於名稱參考它也有效,但沒有明確提及。 –

+0

現在我發現這個解決方案是由@Frank答覆在這[帖子](http://stackoverflow.com/questions/16617226/referring-to-data-table-columns-by-names-saved-in-variables? rq = 1),這個問題並不是針對這個特定的問題,但他的解決方案也解決了我的問題。 –

回答

1

我們可以使用[[提取列向量

is.vector(DT[[col]]) 
#[1] TRUE 
+1

現在我發現這個解決方案是由@Frank在這[帖子]回答(http://stackoverflow.com/questions/16617226/referring-to - 數據表 - 列按名稱保存的,在變量?RQ = 1) –