1
我剛剛學習在R中創建函數,所以我試圖做一個函數來繪製線性迴歸的殘差線。我已經嘗試過了,代碼在函數外部工作,但是一旦我將它全部放入函數中,我會得到'x'和'y'長度不同的錯誤。 這裏是我的功能: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'或兩者的函數。
任何人都可以告訴我錯誤是什麼以及如何解決它?謝謝。
檢查NA的數據。 – AidanGawronski
首先,如果您沒有繪製陰謀,則不能使用abline,因此,您必須首先繪製迴歸函數 –
'c(x [k],x [k])'是長度爲2,而c(y [k],predict(lm(y〜x)))是長度爲'length(y)+ 1'的向量。另外,不要用循環來繪製多行,而應考慮使用'segments':'segments(x0 = x,y0 = y,y1 = predict(lm(y〜x)))''。 –