这应该很简单,但由于某种原因 data.table 没有达到我的预期。我想取一行中两个值的最大值来确定是否应该过滤一行。似乎发生的情况是 max() 函数正在查看整个列,这不是我想要的。这是代码:
> 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
这是我的期望:
value1 value2 value3
1: 1 2 3
2: 2 3 4
3: 3 4 5
4: 4 5 6
我在这里做错了什么?这应该是微不足道的,但我似乎错过了一些关键的东西。
你想要并行最大值,或者pmax
. See ?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
了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)