我创建了一个函数来返回如下所示的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
我的函数怎么了?
答案 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)