R:调试函数:'x'和'y'长度不同错误

时间:2017-01-03 17:28:52

标签: r function debugging linear-regression

我只是学习在R中创建函数,所以我试图创建一个函数来绘制线性回归的残差线。我已经尝试了它,代码在函数之外工作,但是一旦我将它全部放入函数中,我得到'x'和'y'长度不同的错误。 这是我的功能:

`reslines <- function(x,y) {
abline(lm(y~x))
for(k in 1: length(y)) lines(c(x[k],x[k]), c(y[k], predict(lm(y~x))))
}`

tracebook显示错误发生在此处:

6 stop("'x' and 'y' lengths differ") 
5 xy.coords(x, y) 
4 plot.xy(xy.coords(x, y), type = type, ...) 
3 lines.default(c(x[k], x[k]), c(y[k], predict(lm(y ~ x)))) 
2 lines(c(x[k], x[k]), c(y[k], predict(lm(y ~ x)))) 
1 reslines(a, b) 

我已经检查了我尝试过使用length()函数的每个数据集的长度,它们都匹配,所以在函数内部发生了一些似乎改变长度或'x'或'y'的事情或两者兼而有之。

有谁能告诉我错误是什么以及如何解决?感谢。

1 个答案:

答案 0 :(得分:0)

我认为我修复了它,它不是非常简单,主要是问题出在你预测的地方你使用y,x而不是y [k],x [k]。但还有一点:

reslines <- function(x,y) {
  plot(y~x)
  abline(lm(y~x))
  lm.xy <- lm(y~x)
  for(k in 1: length(y)) {
    lines(c(x[k],x[k]), c(y[k], predict(lm.xy, data.frame(x=x[k], y = y[k]))))
  }
}

现在进行测试

set.seed(123)
reslines(rnorm(10), rnorm(10))

enter image description here