为了方便起见,我想编写一个函数,将线图和散点图添加到现有的图中。我定义:
addlinetoplot <- function(dataset, varx, vary)
{
p <- geom_line(data=dataset, aes_string(x=varx, y=vary)) +
geom_point(data=dataset, aes_string(x=varx, y=vary))
p
}
上面的功能不起作用。如果我删除它就可以了+
标志和geom_point()
部分。上面的方法不起作用,因为由于某种原因无法添加这两个几何对象。下面的例子说明了这个问题。
然后,我尝试:
df1 <- data.frame(c1 = c(1:10), c2 = c(1:10))
c1 <- c(1:10)
csq <- c1^2
df2 <- data.frame(c1 = c(1:10), csq)
pltbase <- ggplot() + geom_line(df1, aes(x="c1", y="c2"))
# This does not work.
pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq")
我认为问题在于以下语句:
addthistotheplot <- geom_line(data=df2, aes_string(x="c1", y="csq")) +
geom_point(data=df2, aes_string(x="c1", y="csq"))
尝试定义上述语句会引发错误:二元运算符的非数字参数。
我如何定义addlinetoplot()
功能,这样我就可以:
pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq")
工作。一种方法是将 geom_line 和 geom_point 分开,并为它们分别定义不同的函数。有没有办法在同一个函数中做到这一点?
Thanks!