基于字符串的条件条件粘贴

时间:2019-04-16 18:49:44

标签: r dplyr

我正试图允许用户输入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)")))

在此先感谢您的帮助!

注意:根据@akrun在以下注释中的建议,将其更改为if / else,以下代码将起作用:

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的值,并希望应用该功能。有没有以这种方式扩展的方法?

0 个答案:

没有答案