Условная вставка функции на основе строки - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь разрешить пользователю ввести версию 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 и хотел бы, чтобы эта функция применялась. Есть ли способ масштабировать таким образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...