You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制线性回归时遇integerOneIndex错误,回归线仅显示一条

问题排查与修正

错误原因

你的代码报错及仅显示一条回归线的核心问题出在第二个for循环的迭代条件上:

  • nlevels(No_of_parrots)是错误用法:No_of_parrots是数值型向量,而nlevels()函数仅对因子类型生效,对数值向量调用该函数会返回NULL,导致循环的迭代范围1:nlevels(No_of_parrots)异常。
  • 由于迭代范围错误,循环无法正确遍历按因子A拆分后的两组数据(SY和SA各有2个元素),进而出现索引越界错误,且仅绘制了部分回归线。

修正后的代码

将第二个for循环的迭代条件从nlevels(No_of_parrots)改为nlevels(A),与第一个循环保持一致:

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(A)) abline(lm(SY[[i]] ~ SA[[i]]),  lty=1 )

额外说明

  • 拆分后的SA和SY的元素数量等于因子A的水平数(你的场景中是2),因此用nlevels(A)作为循环次数才是正确的。
  • 若要区分两条回归线,可给abline添加不同颜色参数,比如col = i,方便观察分组差异。

内容的提问来源于stack exchange,提问作者Spybuster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:45:59