在data.table列上使用%in%运算符

4

使用普通的data.frame,您可以执行以下操作:

head(mtcars[, 2]) %in% 6
[1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE

我该如何使用 data.table 做相同的事情?我尝试了以下代码,但没有成功:
as.data.table(mtcars)[, 2] %in% 4
[1] FALSE

当然,总有一种方法可以使用as.data.frame(myDT),但这似乎不够优雅。


5
使用[[可以将数据表作为向量进行子集操作。 [,2]仍然是一个只有一列的数据表。与data.framedata.table/tibble不同之一是,应该使用as.data.table(mtcars)[[2]] %in% 4进行操作。 - akrun
1
谢谢,@akrun!我以为在data.table中会有像drop选项一样的东西来处理data.frame。 - vladli
对于子集化列,可以使用 with = FALSE - akrun
1
是的,我在发布这个问题之前尝试过这样的代码 mtcars[, "mpg", with = FALSE],但它没有像需要的那样对向量进行子集化。不管怎样,你帮了我一个忙。我应该关闭这个问题吗?如果你发布答案,我会接受它。 - vladli
1个回答

3

使用 data.table/tibble/data_frame 等,对于单列的 [,columnindex] 仍会返回一个 data.table/tibble/data_frame。我们需要使用 $[[ 返回一个 vector%in% 用于 vector

as.data.table(mtcars)[[2]] %in% 4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接