2012-11-30 149 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