这应该是如此简单,但由于某种原因data.table没有做我期望的事情。我想连续取最多两个值来确定是否应该过滤一行。似乎正在发生的事情是max()函数正在查看整个列,这不是我想要的。这是代码:
0:1
这就是我的期望:
> test_dt <- data.table(value1 = 1:10, value2 = 2:11, value3 = 3:12)
> test_dt[max(value1, value2, value3) < 7]
Empty data.table (0 rows) of 3 cols: value1,value2,value3
我在这里做错了什么?这应该是微不足道的,但我似乎缺少一些关键的东西。
答案 0 :(得分:2)
您想要并行最大值,或pmax
。有关详细信息,请参阅?max
:
test_dt[pmax(value1, value2, value3) < 7]
# value1 value2 value3
# 1: 1 2 3
# 2: 2 3 4
# 3: 3 4 5
# 4: 4 5 6
如果您真的想要速度,可以再次使用pmax.int
,请参阅?max
了解详情。