我创建的用于返回ggplot对象的函数返回错误

时间:2019-01-25 16:49:54

标签: r ggplot2

我创建了一个函数来返回如下所示的ggplot对象

uni_var<-function(df,col){
  return(ggplot(df,aes(col))+geom_bar())
}

当我调用mtcars数据框

uni_var(mtcars,cyl)

我收到以下错误

Error in FUN(X[[i]], ...) : object 'cyl' not found
In addition: Warning message:
In FUN(X[[i]], ...) : restarting interrupted promise evaluation

我的函数怎么了?

2 个答案:

答案 0 :(得分:4)

研究为什么您需要引用@ claudiu-papasteri的答案中所举例说明的内容可能会很有用。在R中搜索非标准评估。另请参见https://rlang.r-lib.org/index.html

尝试弄清楚该示例为何起作用:

library(ggplot2)

uni_var<-function(df,col){
  col <- rlang::enquo(col)
  return(ggplot(df,aes(!!col))+geom_bar())
}

uni_var(mtcars, cyl)

答案 1 :(得分:1)

没有错。只要做:

uni_var(mtcars, "cyl")

这是你要去的吗?

uni_var<-function(df, col){
  col <- eval(substitute(col), df)
 return(ggplot(df, aes(col)) + geom_bar())
}

uni_var(mtcars, cyl)