我有一个小功能,可以搜索依赖于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))
}
无论用户输入列名如何,即在标准或非标准评估中,是否有办法使函数有效?
答案 0 :(得分: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))))