Новое в использовании семейства TidyVerse в R. Попытка использовать mutate внутри функции для классификации строк переменной как положительных или отрицательных.Работает нормально вне моего вызова функции, но строго возвращает ноль в нем.
Возможность заставить функцию работать как задумано, когда я не использую mutate, но я хотел бы понять проблемы, с которыми я сталкиваюсь.Я могу сказать, что проблема в том, что я передаю строку для функции.Я возился с различными вещами, такими как as.name (), quo () и UQ, но я не достиг успеха.Не очень понимаю, как лучше всего использовать глаголы Dplyr в функции - Должен ли я просто вернуться к более нормальному синтаксису?
find_if_maj <- function(var_name,curr_year,k_i) {
if(var_name == "unemp_chg") {
temp <- agg_econ %>% select(year,var_name) %>% # Subsetting to the desired variable
filter((year <= curr_year) & (year >= (curr_year - k_i))) %>% # Subsetting to the desired range of years
mutate(indicator = ifelse(var_name <= 0, 1, 0)) # Creating a dummy indicator based on if the value is negative or positive
return(temp) # Just returning the tibble for bug checking
}
}
find_if_maj("unemp_chg",1970,5) %>% mutate(outsidefunc = ifelse(unemp_chg <= 0, 1, 0)) # Running the function, displaying what result should be
Я ожидаю, что столбец индикатора, созданный mutate, будет заполнен 1 и 0 в зависимости от введенного значения.Столбец индикатора, созданный функцией, просто возвращает 0 независимо от входного значения, но столбец outside_func, сгенерированный мной для проверки правильности, возвращает правильные значения.