2012-11-30 128 views
1

檢索特定值I在R A data.table從而:從子集劃分一個data.table

my.dt <- data.table(x=seq(1:5),y=(c(TRUE, TRUE, FALSE, FALSE, FALSE))) 

我想提取單個值,或值的這個向量:

boolean.vector <- my.dt[x<4,"y",with=FALSE] 
boolean.value <- my.dt[x<2,"y",with=FALSE] 

但是,這些返回值仍然是data.table類。因此,我不能,例如,執行以下操作:

> if(boolean.value) { print("Hello") } 
Erro em if (boolean.value) { : argumento não é interpretável como lógico 
# (Error in if (boolean.value) { : argument cannot be interpreted as logical) 

如何檢索原始值,以便我可以以這種方式使用它們?

回答

3

而不是

my.dt[1:3,"y",with=FALSE] 

我只想做

my.dt$y[1:3] 

my.dt[["y"]][1:3] 

my.dt[x<2,"y",with=FALSE][[1]] 

在基礎R [[不復制向量(它的副本上的變化),因此這是非常有效的,並且沒有任何需要使用data.table語法此。

+0

道歉,這是我的最小代碼未能代表問題的情況。我實際上希望指定一個行選擇子句,例如my.dt [x <2,「y」,with = FALSE]這似乎不符合您的答案。我會更新這個問題。 – Ina

+0

如何堅持'[[1]]'結束? –

+0

完美,謝謝 – Ina

2

您可以使用unlist功能的輸出轉換成布爾向量:

unlist(boolean.value) 
    y 
TRUE 

unlist(boolean.vector) 
    y1 y2 y3 
TRUE TRUE FALSE 
+0

這個答案也適用,謝謝 – Ina