這是代碼:-
A<- as.factor(Fire)
X <- as.numeric(Length_in_meter)
No_of_parrots <- as.numeric(No_of_parrots)
model <- aov(No_of_parrots ~ X*A)
summary(model)
par(cex=1.5)
plot(X, No_of_parrots, type = "n" , las=1,
xlab = "Length in meter" , ylab = "No_of_parrots")
SA <- split(X , A)
SY <- split(No_of_parrots , A)
for (i in 1:nlevels(A)) points(SA[[i]], SY[[i]], pch = i-1)
for (i in 1:nlevels(No_of_parrots)) abline(lm(SY[[i]] ~ SA[[i]]), lty=1 )
然后我得到了這個輸出:
Error in SY[[i]] :
attempt to select less than one element in integerOneIndex
R 繪制了一張只有一條回歸線的圖,但假設有兩條。當我做錯時,你能幫忙嗎?謝謝,
uj5u.com熱心網友回復:
tl; dr 可能是for (i in 1:nlevels(No_of_parrots))一個錯字;你可能的意思是。for (i in 1:nlevels(A))
nlevels()僅與因子變數相關。通過使用as.numeric(),您確保它不是一個因素(即使它開始是一個因素),因此nlevels()將回傳 0,例如
parrots <- factor(1:3)
nlevels(as.numeric(parrots)) ## 0
當您在 上運行回圈時1:nlevels(...),它的計算結果為1:0→ c(1, 0)(這seq(n)是通常建議在 上運行的原因之一1:n)。第一次通過回圈選擇 和 的第一個SA元素SY。第二次通過 ( i==0) 您嘗試選擇第零個元素,這會引發錯誤(我得到一個稍微不同的錯誤,“嘗試在 get1index 中選擇少于一個元素”,但這可能是由于不同的 R 版本或其他原因——概念是一樣的)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524534.html
標籤:r线性回归方差分析
下一篇:將ICD10代碼從一行擴展為多行
