Ich frage mich, wie man richtig UQ
String erstellt Variablennamen auf der RHS in dplyr
Methoden wie mutate
. Sehen Sie sich die Fehlermeldungen Ich habe in den Kommentaren im wilcox.test
Teil dieses MWE:dplyr :: muate 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()
ich !!(qcol) ...
denke, es interpretiert wird, als ich den ganzen Ausdruck unquote möchte nicht nur der Variablenname, deshalb ist es nicht finden base
? Ich fand auch heraus, dass (!!qcol)
die Zeichenfolge selbst zurückgibt, so dass keine Überraschung der -
-Operator nicht damit umgehen kann.
Danke Mikko! In der Tat "q0" werde ich diesen Tippfehler beheben. Außerdem habe ich festgestellt, dass '(!! as.name (qcol))' funktioniert, wenn ich 'qcol' als String belasse. – deeenes