我想知道如何正确地UQ
在 RHS 上dplyr
以mutate
. 请参阅我在wilcox.test
此 MWE 部分的评论中收到的错误消息:
require(dplyr)
dfMain <- data.frame(
base = c(rep('A', 5), rep('B', 5)),
id = letters[1:10],
q0 = rnorm(10)
)
backgs <- list(
A = rnorm(13),
B = rnorm(11)
)
fun <- function(dfMain, i = 0){
pcol <- sprintf('p%i', i)
qcol <- sprintf('q%i', i)
(
dfMain %>%
group_by(id) %>%
mutate(
!!pcol := ifelse(
!is.nan(!!qcol) &
length(backgs[[base]]),
wilcox.test(
# !!(qcol) - backgs[[base]]
# object 'base' not found
# (!!qcol) - backgs[[base]]
# non-numeric argument to binary operator
(!!qcol) - backgs[[base]]
)$p.value,
NaN
)
)
)
}
dfMain <- dfMain %>% fun()
我猜!!(qcol) ...
它被解释为我想取消引用整个表达式,而不仅仅是变量名,这就是它找不到的原因base
?我还发现(!!qcol)
返回字符串本身,因此-
操作员无法处理它也就不足为奇了。