1
私は正しくUQ
の文字列をdplyr
のようにdplyr
の方法でRHSに作成した文字列をmutate
のように作成しました。私はこのMWEのwilcox.test
一部にコメントで得たエラー・メッセージを参照してください:dplyr :: mutate unquote RHS
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()
私はそれが見つからない理由です式全体だけではなく、変数名をUNQUOTEしたいと、それが解釈され!!(qcol) ...
を推測base
?私はまた(!!qcol)
が文字列自体を返すので、驚きはないので、-
オペレータはそれを処理できません。
qcol
を定義する行変更することにより、期待通りに動作するはずです
ありがとうございました!確かに 'q0'私はこのタイプミスを修正します。また、文字列として 'qcol'を残しておけば、'(!! as.name(qcol)) 'が動作することも発見しました。 – deeenes