Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R data.table:当并非所有变量都在组内时,如何筛选%in%的行?_R_Data.table - Fatal编程技术网

R data.table:当并非所有变量都在组内时,如何筛选%in%的行?

R data.table:当并非所有变量都在组内时,如何筛选%in%的行?,r,data.table,R,Data.table,这可能是一个简单的问题,我遗漏了一些东西。但这让我很烦。假设此示例data.table: library(data.table) test <- data.table(group1 = "a", group2 = "z", value = 1) 但这确实: test[group1 %in% c("a", "b"), ][,sum(value), group2] group2 V1 1: z 1 这真的是预期的行为吗 对我来说这看起来像个bug,但是您可以在i周围加上

这可能是一个简单的问题,我遗漏了一些东西。但这让我很烦。假设此示例data.table:

library(data.table)
test <- data.table(group1 = "a", group2 = "z", value  = 1)
但这确实:

test[group1 %in% c("a", "b"), ][,sum(value), group2]
   group2 V1
1:      z  1

这真的是预期的行为吗

对我来说这看起来像个bug,但是您可以在
i
周围加上括号来获得预期的行为:

test[(group1 %in% c("a", "b")),sum(value), group2]

更新:此行为在中已修复,现在可以正常工作


另一个解决方法是使用
data.table
内置的
%chin%
函数

test[group1 %chin% c("a", "b"), sum(value), group2]
#    group2 V1
# 1:      z  1

谢谢看起来像(另一个)自动索引错误。已经提交。现在,您可以通过执行
选项(datatable.auto.index=FALSE)
禁用自动索引。另外,为了将来,请添加您正在处理的data.table版本。@Arun感谢您的快速回复!我使用的是
data.table
1.9.4.@Arun有些关联(虽然它似乎已经被修复了)?@Davidernburg,它没有关联。谢谢,这比
测试[group1%in%c(“a”,“b”),][,sum(value),group2]
简单。这是一个很好的解决方法,可能比
%in%
快一点。它肯定是,请记住,它仅用于
字符
列(请阅读文档)。IMO最安全的解决方法是@Aruns
options(datatable.auto.index=FALSE)
问题是我在一个包中使用它,我不知道是否要更改它,取决于用户保留此选项。
test[group1 %chin% c("a", "b"), sum(value), group2]
#    group2 V1
# 1:      z  1