В настоящее время у меня возникают проблемы с нестандартной оценкой при попытке обернуть функцию вокруг некоторых вычислений, выполненных с помощью dplyr und purrr, которые я использую несколько раз.
Я читал о NSE и думаю, что знаю, где моя функция не работает должным образом, однако я не мог понять, почему это так.
Например, я хочу обернуть функцию вокруг следующих вычислений, где переменная группирования, а также имя новой переменной, используемая переменная категоризации и входная переменная для среднего значения должны быть динамическими:
Data <- Data %>%
group_by(WeekBeforeRelease) %>%
mutate(visitors_genreother_instr = map_dbl(Genre_Category, ~ mean(Visitors[Genre_Category != .x]))) %>%
ungroup() %>%
as.data.frame()
Что превращает эту функцию в следующую, используя NSE, как описано здесь :
Function_Other <- function(ENDOGVAR, VARNAME, GROUP_MOVIE, GROUP_TIME){
ENDOGVAR <- enquo(ENDOGVAR)
VARNAME <- quo_name(enquo(VARNAME))
GROUP_MOVIE <- enquo(GROUP_MOVIE)
GROUP_TIME <- enquo(GROUP_TIME)
Data <<- Data %>%
group_by(!!GROUP_TIME) %>%
mutate(!!VARNAME := map_dbl(!!GROUP_MOVIE, ~mean(!!ENDOGVAR[!!GROUP_MOVIE != .x]))) %>%
ungroup() %>%
as.data.frame()
}
Однако, похоже, это не обрабатывает подмножество в квадратных скобках в расчете на среднее значение. Если я заменил !! ENDOGVAR с посетителями, все работает нормально и как задумано. Однако, как есть, он выдает следующую ошибку:
Error in NextMethod("[") : object '.x' not found
Я рад любой помощи, которая указывает мне на понимание этой проблемы.
Заранее большое спасибо!
Рондо