2

我有一个小功能可以搜索用户定义column的依赖于dplyr. 在下面的当前形式中,它接受非标准评估中的列参数 - 不带引号(例如scenario,而不是"scenario"标准评估)。

search_column <- function(df, column, string, fixed = TRUE){
      df <- dplyr::select_(df, deparse(substitute(column)))
      df <- distinct(df)

      return(grep(string, df[[1]], fixed = fixed, value = TRUE))
    }

无论用户如何输入列名,即在标准或非标准评估中,是否有办法使该功能正常工作?

4

1 回答 1

4

我建议简单地删除添加deparse到字符串输入的额外引号,在这种情况下,它将产生相同的输出,并且您的代码将适用于任何输入

比较 3 个可能的输入

gsub('"', "", deparse(substitute("mpg")))
[1] "mpg"
gsub('"', "", deparse(substitute('mpg')))
[1] "mpg"
gsub('"', "", deparse(substitute(mpg)))
[1] "mpg"

所以解决方案可能是将您的第一行修改为

df <- dplyr::select_(df, gsub('"', "", deparse(substitute(column))))
于 2016-01-21T11:58:43.163 回答