Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 能够将ggplot美学指定给应返回ggplot对象的函数_R_Function_Ggplot2_Aesthetics - Fatal编程技术网

R 能够将ggplot美学指定给应返回ggplot对象的函数

R 能够将ggplot美学指定给应返回ggplot对象的函数,r,function,ggplot2,aesthetics,R,Function,Ggplot2,Aesthetics,我试图构造一个行为类似于ggplot函数的函数,并返回一个ggplot对象,其他函数可以进一步处理它(添加方面、应用主题等) 我现在面临的障碍是,我无法让传递到函数的参数像我期望的那样工作 data(iris) te <- function(data,x,y){ g <- ggplot(data,aes_q(x=quote(x),y=quote(y))) + scale_x_continuous() + scale_y_continuous() + geom_point(

我试图构造一个行为类似于ggplot函数的函数,并返回一个ggplot对象,其他函数可以进一步处理它(添加方面、应用主题等)

我现在面临的障碍是,我无法让传递到函数的参数像我期望的那样工作

data(iris)
te <- function(data,x,y){

  g <- ggplot(data,aes_q(x=quote(x),y=quote(y))) + scale_x_continuous() + 
  scale_y_continuous() + geom_point()
  return(g)

}
te(iris,x=Species,y=Petal.Length)

我希望这能使我不以字符串的形式传递参数,但很明显,我在这里做错了什么。对我来说,奇怪的是geom_point是一个抱怨的函数。为什么会这样?

调用函数时,请尝试
quote

data(iris)
library(ggplot2)
te <- function(data,x,y){
  g <- ggplot(data,aes_q(x,y)) + scale_x_continuous() + 
    scale_y_continuous() + geom_point()
  return(g)

}
te(iris,x=quote(Species),y=quote(Petal.Length))
数据(iris)
图书馆(GG2)

在函数中,您需要使用
替换
而不是
引用

data(iris)
te <- function(data,x,y){
  
  x <- substitute(x)
  y <- substitute(y)
  g <- ggplot(data,aes_q(x=x,y=y)) + scale_x_discrete() + 
    scale_y_continuous() + geom_point()
  return(g)
  
}
te(iris,x=Species,y=Petal.Length)
数据(iris)
te
data(iris)
te <- function(data,x,y){
  
  x <- substitute(x)
  y <- substitute(y)
  g <- ggplot(data,aes_q(x=x,y=y)) + scale_x_discrete() + 
    scale_y_continuous() + geom_point()
  return(g)
  
}
te(iris,x=Species,y=Petal.Length)