Я пытаюсь разрешить пользователю ввести версию cut_
и использовать версию функции, которую они указали в функции mutate
ниже по течению.
Функциональная версия кода для вырезки находится ниже:
df2<- d3 %>%
mutate_if(is.numeric,funs(cut_interval(.,n=5)))
То, что я хотел бы сделать здесь, вместо того, чтобы явно включить cut_interval()
в мой код, - это позволить пользователю ввести значение для переменной с именем "slicer". Если они вводят значение «cut_interval», то я бы хотел, чтобы функция mutate использовала это. Если они введут «cut_number», то я бы хотел, чтобы вместо этого была применена эта функция cut.
Мои нерабочие попытки:
slicer <- "cut_number"
ifelse(slicer=="cut_number",
df2<- d3 %>%
mutate_if(is.numeric,funs(cut_number(.,n=5))),
df2<- d3 %>%
mutate_if(is.numeric,funs(cut_interval(.,n=5))))
и
df2<- d3 %>%
mutate_if(is.numeric,funs(paste0(slicer,"(.,n=5)")))
Заранее спасибо за любую помощь!
Примечание. При изменении значения if / else в соответствии с рекомендацией @akrun в комментарии ниже работает следующий код:
if (slicer=="cut_number"){
df2<- d3 %>%
mutate_if(is.numeric,funs(cut_number(.,n=5)))} else {df2<- d3 %>%
mutate_if(is.numeric,funs(cut_interval(.,n=5)))}
Продолжая исходную цель, представьте ситуацию, в которой были сотни различных функций, которые я мог бы разрешить пользователю вводить в качестве значения для slicer
и хотел бы, чтобы эта функция применялась. Есть ли способ масштабировать таким образом?