在下面的可重现示例中,我想过滤df中的行,其中变量的表达式给出了特定的结果.第1行和第3行符合要求,应退回.但是我的第一次尝试不正确,因为我用来==比较标量.
df <- data.frame(matrix(c(1,8,3,7,4,5,6,2,9,1,2,3,4,5,6,7,8,9,9,6,4,3,5,8,1,7,2),ncol=9,byrow=T))
df %>%
filter(X1+13*X2/X3+X4+12*X5-X6-11+X7*X8/X9-10==66)
X1 X2 X3 X4 X5 X6 X7 X8 X9
1 9 6 4 3 5 8 1 7 2
Run Code Online (Sandbox Code Playgroud)
我试图使用isTRUE(all.equal(...))方法纠正我的错误,但令我惊讶的是我根本没有得到任何结果.
df %>%
filter(isTRUE(all.equal(X1+13*X2/X3+X4+12*X5-X6-11+X7*X8/X9-10,66)))
[1] X1 X2 X3 X4 X5 X6 X7 X8 X9
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
我该如何进行这种比较?
all.equal 没有矢量化 - 为什么不
df %>%
filter(abs(X1+13*X2/X3+X4+12*X5-X6-11+X7*X8/X9-10 - 66) < 1e-8)
Run Code Online (Sandbox Code Playgroud)