我是编写函数的新手,因此我无法想象这一点并不奇怪。我只想生成一个简单的函数,其中一个指定数据帧和你想要的变量,然后ggplot生成一个双变量图。我觉得下面应该工作,因为我已经使用了几个与ggplot2建议的功能的变通方法:
library(ggplot2)
xy <- data.frame(xvar=1:10,yvar=1:10)
plotfunc <- function(Data, x, y){
.e <- environment()
ggplot(Data, aes(x = x, y = y), environment = .e) +
geom_line()
}
plotfunc(xy, xvar, yvar)
但是,上面的代码会生成以下错误消息:
Error in eval(expr, envir, enclos) : object 'xvar' not found
In addition: Warning message:
In eval(expr, envir, enclos) : restarting interrupted promise evaluation
有关我在这里做错了什么的建议吗?显然这是一个微不足道的例子,我希望将其扩展到更广泛的用途。
提前致谢。
答案 0 :(得分:5)
使用aes_q
:
plotfunc <- function(Data, x, y){
print(
ggplot(Data, aes_q(x = substitute(x), y = substitute(y))) +
geom_line()
)
}
plotfunc(xy, xvar, yvar)