请你帮助我好吗。
我已经尝试了很多组合,但没有任何效果。
这里的例子:
library(dplyr)
foo <- function(AA,x){
mn <- make.names(x)
mn <- enquo(mn)
filter(AA,mn==min(!!mn))
}
aa <- data.frame(A=c("a","b","c","d"), B.D = c(1,2,1,3))
foo(aa,"B D")
Run Code Online (Sandbox Code Playgroud)
输出是
Error: Base operators are not defined for quosures.
Do you need to unquote the quosure?
# Bad:
myquosure == rhs
# Good:
!!myquosure == rhs
Run `rlang::last_error()` to see where the error occurred.
Run Code Online (Sandbox Code Playgroud)
代替
filter(aa,B.D==min(B.D))
A B.D
1 a 1
2 c 1
Run Code Online (Sandbox Code Playgroud)
您能帮我使用我的函数获得所需的输出吗?
谢谢你。
约翰
我注意到,以下检查在R中给出FALSE:
(1000*0.6/24)==(1000*(0.6/24))
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
后续地板功能给出了不同的结果:
floor(1000*0.6/24)
[1] 25
floor(1000*(0.6/24))
[1] 24
Run Code Online (Sandbox Code Playgroud)
这种不一致对于我的代码来说至关重要。
有人有关于如何防止这种行为的解释和提示吗?
谢谢。
此致,
约翰