我在R中有一个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)
如何检索原始值以便以这种方式使用它们?
答案 0 :(得分: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
语法。
答案 1 :(得分:2)
您可以使用unlist
函数将输出转换为布尔矢量:
unlist(boolean.value)
y
TRUE
unlist(boolean.vector)
y1 y2 y3
TRUE TRUE FALSE