小编con*_*mer的帖子

dplyr:如何将字符串传递给 dplyr 的 mutate 参数

我想编写一个辅助函数,一次性总结 A、B 和 C 列的百分比变化。我想在 rlang 的帮助下将字符串传递给 dplyr 的“mutate”参数。不幸的是,我收到一条错误消息,说我有一个意外的“,”。可以请您看一下吗?提前致谢!

library(rlang) #read text inputs and return vars
library(dplyr)


set.seed(10)
dat <- data.frame(A=rnorm(10,0,1),
                  B=rnorm(10,0,1),
                  C=rnorm(10,0,1),
                  D=2001:2010)

calc_perct_chg <- function(input_data,
                           target_Var_list,
                           year_Var_name){

      #create new variable names
          mutate_varNames <- paste0(target_Var_list,rep("_pct_chg = ",length(target_Var_list)))

      #generate text for formula
          mutate_formula  <- lapply(target_Var_list,function(x){output <- paste0("(",x,"-lag(",x,"))/lag(",x,")");return(output)})
          mutate_formula  <- unlist(mutate_formula) #convert list to a vector

      #generate arguments for mutate
          mutate_args <<- paste0(mutate_varNames,collapse=",",mutate_formula)

      #data manipulation
           output <- input_data %>% 
                         arrange(!!parse_quo(year_Var_name,env=caller_env())) %>% 
                         mutate(!!parse_quo(mutate_args,env=caller_env()))
      #output data frame
          return(output)
}



# error: unexpected ',' …
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr tidyverse

0
推荐指数
1
解决办法
990
查看次数

标签 统计

dataframe ×1

dplyr ×1

r ×1

tidyverse ×1