如何将列名传递给使用dplyr的自定义函数?

问题描述:

我已经写了这个功能,只需更换一个数据表的列中的每个值与其子:如何将列名传递给使用dplyr的自定义函数?

substrColName <- function(df, colName, start) { 
    df %>% mutate(colName = substr(colName, start=start, stop=nchar(colName))) 
} 

但我尝试运行它每次我得到的错误:

Error in as.character(x) : cannot coerce type 'closure' to vector of type 'character' 

现在我已经做了大量的研究,为什么它不起作用,但我无法弄清楚。我读过一些标准评估和lazyeval的东西,但没有我尝试似乎工作。任何帮助?

谢谢

+0

你能否提供与您在运行该函数的数据? – useR

+0

看到这个https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html学习与dplyr编程。 – www

谢谢,@ycw,这是一个很好的阅读。在完成文章之后立即开始工作。这是在一天结束的解决方案:

substrColName <- function(df, colName, start) { 
    colNameQuo <- enquo(colName) 
    df %>% mutate(!!quo_name(colNameQuo) := substr(!!colNameQuo, start=start,stop=nchar(!!colNameQuo))) 
} 

And this is ycw's comment.

+0

你可以接受你自己的回答:) – useR