7 r data.table
在 R 中data.table,什么时候应该在%between%和 之间%inrange%进行取子集运算?我已经阅读了帮助页面,?between但我仍然对这些差异摸不着头脑。
library(data.table)
X = data.table(a=1:5, b=6:10, c=c(5:1))
> X[b %between% c(7,9)]
a b c
1: 2 7 4
2: 3 8 3
3: 4 9 2
> X[b %inrange% c(7,9)]
a b c
1: 2 7 4
2: 3 8 3
3: 4 9 2
Run Code Online (Sandbox Code Playgroud)
它们在我看来是一样的。有人可以解释一下为什么存在这两种操作吗?
小智 7
> X
a b c
1: 1 6 5
2: 2 7 4
3: 3 8 3
4: 4 9 2
5: 5 10 1
Run Code Online (Sandbox Code Playgroud)
使用评论中的示例:
> X[a %between% list(c, b)]
a b c
1: 3 8 3
2: 4 9 2
3: 5 10 1
> X[a %inrange% list(c, b)]
a b c
1: 1 6 5
2: 2 7 4
3: 3 8 3
4: 4 9 2
5: 5 10 1
Run Code Online (Sandbox Code Playgroud)
它似乎between单独查看每一行并检查 a 中的值是否使得该行的 c <= a <= b 。
inrange查找 中的最小标量值c(例如)cmin和 , 中的最大标量值b,bmax形成一个范围[cmin, bmax],然后检查列中的每一行是否a位于该范围内。[cmin, bmax]a