具有一个响应变量和一个预测变量并生成带有简单回归线的散点图的函数

问题描述 投票:0回答:2

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。我为什么得到它?另外,我的功能正确吗?

r
2个回答
2
投票

因为plot无法保存到变量;它只能直接绘制。您的解决方案很简单:

myModel = function(resp, pred){
  linMod = lm(resp~pred)
  plot(pred,resp, main="predictor~response")
  abline(linMod, col="red")
}

1
投票

[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
© www.soinside.com 2019 - 2024. All rights reserved.