r - 如何将列名传递到使用 dplyr 的自定义函数中?

标签 r arguments 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'

现在我已经做了很多研究为什么它不起作用,但我无法弄清楚。我读过一些有关标准评估和惰性评估的内容,但我尝试的似乎都不起作用。有什么帮助吗?

谢谢

最佳答案

谢谢,@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.

关于r - 如何将列名传递到使用 dplyr 的自定义函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46616162/

相关文章:

java - 如何发现方法中必须使用什么参数格式?

r - 使用 dplyr 编写函数时的惰性求值

xml - 在 R 中使用 getNodeSet 进行复杂的 xPath 查询

使用 R 中的 openxlsx 从 Excel 工作表中读取列

python - 当 argparse 指向路径名时,我怎么能默认什么都不做呢?

r - dplyr 按第一列过滤

r - 使用此列中的数据时排除 `dplyr` `mutate_at` 中的列

r - 编织时将消息打印到 R markdown 控制台

r - 在 facet_wrap 标签上显示注释

javascript - 这个 javascript 连接对我有用一次,但是这总是可以接受的 javascript 吗?