Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 如何将多个ggplot2元素组合到函数的返回中?_R_Ggplot2 - Fatal编程技术网

R 如何将多个ggplot2元素组合到函数的返回中?

R 如何将多个ggplot2元素组合到函数的返回中?,r,ggplot2,R,Ggplot2,如果我尝试手动合成ggplot2plot的某些元素,效果很好: > p <- ggplot(aes(x = mpg, y = hp), data = mtcars) > p + geom_vline(xintercept = 20) + geom_point(data = mtcars) >p p+几何线(xintercept=20)+几何点(data=mtcars) 但是,如果我试图将一些组合捆绑到一个函数中,我会得到一个错误: > myFunction <-

如果我尝试手动合成
ggplot2
plot的某些元素,效果很好:

> p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
> p + geom_vline(xintercept = 20) + geom_point(data = mtcars)
>p p+几何线(xintercept=20)+几何点(data=mtcars)
但是,如果我试图将一些组合捆绑到一个函数中,我会得到一个错误:

> myFunction <- function() {
+   return(
+     geom_vline(xintercept = 20) + geom_point(data = mtcars)
+   )
+ }
> p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
> p + myFunction()
Error in geom_vline(xintercept = 20) + geom_point(data = mtcars) : 
  non-numeric argument to binary operator
>myFunction p+myFunction()
几何线误差(xintercept=20)+几何点误差(data=mtcars):
二进制运算符的非数值参数
在函数体中正确组合
ggplot2
元素的
ggplot2
符号中是否缺少某些内容?

ggplot2支持元素的“列表”:

myFunction <- function()
 list(geom_vline(xintercept = 20),
      geom_point(data = mtcars))

p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
p + myFunction()

myFunction我认为
+
运算符要求其中一个参数属于类
ggplot
,以便正确发挥其魔力。几何图形不是
ggplot
对象,而是plot
p
对象。另请参见Hadley的尼斯教程(2015年年中)中关于这一点的内容: