функция, которая принимает переменную ответа и переменную предиктора и создает диаграмму рассеяния с простой линией регрессии - PullRequest
0 голосов
/ 02 марта 2020

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 в моей консоли. Почему я это понимаю? Кроме того, моя функция верна?

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

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
2 голосов
/ 02 марта 2020

Потому что plot нельзя сохранить в переменные; Он может быть нанесен только напрямую. Ваше решение простое:

myModel = function(resp, pred){
  linMod = lm(resp~pred)
  plot(pred,resp, main="predictor~response")
  abline(linMod, col="red")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...