myModel = function(resp, pred){
linMod = lm(resp~pred)
myPlot = plot(pred,resp, main="predictor~response")
abline(linMod, col="red")
return(myPlot)
}
我想创建一个R函数,该函数将响应变量和预测变量作为输入,产生具有拟合的简单线性回归线的散点图。
然后我在控制台中输入> myModel(c(0.25,0.5,1.0),c(1,2,3))
,然后生成散点图,但随后我在控制台中获得了NULL
。我为什么得到它?另外,我的功能正确吗?
因为plot
无法保存到变量;它只能直接绘制。您的解决方案很简单:
myModel = function(resp, pred){
linMod = lm(resp~pred)
plot(pred,resp, main="predictor~response")
abline(linMod, col="red")
}
[plot
不返回值,只是NULL,因此,如果要返回图,则将函数主体中的return
行替换为recordPlot()
,如下所示:
myModel = function(resp, pred){
linMod = lm(resp~pred)
plot(pred,resp, main="predictor~response")
abline(linMod, col="red")
recordPlot()
}
然后我们可以这样做:
p <- myModel(c(0.25,0.5,1.0),c(1,2,3)) # perform plotting
dev.off() # destroy window with plot
print(p) # restore plot