【发布时间】:2017-11-11 20:55:34
【问题描述】:
以下效果很好(我得到了正确的情节):
library(ggplot2)
myfunc <- function(x)
{
n = length(x)
return(sqrt(x)+rnorm(n,0,0.05))
}
myplot1 <- function(df,x,color)
{
df$y <- myfunc(df[[x]])
p <- geom_point(data=df,
aes_string(x=x,y="y"),
colour=color)
return(p)
}
myplot2 <- function(df,x,color)
{
df$y <- myfunc(df[[x]])
p <- geom_smooth(data=df,
aes_string(x=x,y="y"),
colour=color,
method="lm")
return(p)
}
n <- 100
df <- data.frame( X1 = runif(n,0,1),
X2 = rnorm(n,0.5,0.01))
p <- ggplot()
p <- p + myplot1(df,"X1","black") + myplot2(df,"X1","black")
p <- p + myplot1(df,"X2","blue") + myplot2(df,"X2","blue")
p + theme_minimal()
但是,如果我将两个函数 myplot1 和 myplot2 合并为
myplot <- function(df,x,color)
{
df$y <- myfunc(df[[x]])
p <- geom_point(data=df,
aes_string(x=x,y="y"),
colour=color) +
geom_smooth(data=df,
aes_string(x=x,y="y"),
colour=color,
method="lm")
return(p)
}
所以使用
p <- ggplot()
p <- p + myplot(df,"X1","black")
p <- p + myplot(df,"X2","blue")
p + theme_minimal()
我明白了
错误 [...] 二元运算符的非数字参数
我该如何解决这个问题?
【问题讨论】: