这可能是一个简单的问题,我错过了一些东西。但这让我烦恼。假设这个例子是data.table:
library(data.table)
test <- data.table(group1 = "a", group2 = "z", value = 1)
为什么这不起作用
test[group1 %in% c("a", "b"), sum(value), group2]
Erro em `[.data.table`(test, group1 %in% c("a", "b"), sum(value), group2) :
i[2] is 0. While grouping, i=0 is allowed when it's the only value. When length(i) > 1, all i should be > 0.
但这样做:
test[group1 %in% c("a", "b"), ][,sum(value), group2]
group2 V1
1: z 1
这真的是预期的行为吗?
答案 0 :(得分:4)
更新:此行为已在development version, 1.9.5中修复,现在正常运作。
另一种解决方法是使用内置data.table
函数的%chin%
test[group1 %chin% c("a", "b"), sum(value), group2]
# group2 V1
# 1: z 1
答案 1 :(得分:3)
对我来说这看起来像个错误,但你可以在i
周围加上额外的括号来获得预期的行为:
test[(group1 %in% c("a", "b")),sum(value), group2]