访问ggplot函数中的变量

时间:2014-01-20 09:44:21

标签: r ggplot2

我在下面有一个示例数据

data <- data.frame(yr=c(1999,2000,2001,2002,2003,2004,2005,2006,2007,2009,2010,2011,2012), 
                   ntemp =c(11,12,13,14,15,16,17,18,19,20,21,12,23))

当我尝试运行此函数时,访问ggplot函数内的变量。

FUN<-function(data, fun.y,yr) {
  fun.data <- data     
  ggplot(fun.data,aes(yr, fun.y))+geom_point()+scale_y_continuous(fun.y)    
}

FUN(data, "ntemp", yr)

我得到Error in eval(expr, envir, enclos) : object 'fun.y' not found

如何在R3.02上解决这个问题?

1 个答案:

答案 0 :(得分:2)

aes只查看data参数中的变量。如果您希望通过字符名称将变量作为参数传递给FUN,请使用aes_string

FUN <- function(data, x, y) {
  ggplot(data, aes_string(x=x, y=y)) + geom_point()
}

FUN(data, y="ntemp", x="yr")

一个小的修正:aes调用内的变量应该在评估ggplot对象的范围内定义,因此从技术上讲,首先在数据中查找变量,然后在全局环境中查找(默认情况下)。请参阅thisthis个问题。