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

在dplyr中结合lm函数使用between时遇长度匹配错误的求助

解决dplyr添加学生化残差列时的长度匹配错误

问题原因

rstudent(mod)返回的是带名称属性的数值向量,dplyr的mutate会尝试按行名匹配数据而非按位置赋值,即便表面行名完全对应,这种匹配逻辑也可能触发长度不匹配的错误。

解决方案

核心是移除残差向量的名称属性,让mutate按位置顺序赋值,以下几种方法均可实现:

  • 方法1:用as.vector()转换为无名称向量
iris2 <-
  iris |> 
  mutate(res_stud = as.vector(rstudent(mod)),
         res_stud_large = as.numeric(!between(res_stud, -2, 2)))
  • 方法2:用unname()直接移除名称属性
iris2 <-
  iris |> 
  mutate(res_stud = unname(rstudent(mod)),
         res_stud_large = as.numeric(!between(res_stud, -2, 2)))
  • 方法3:提前计算并存储无名称残差向量
stud_res <- unname(rstudent(mod))
iris2 <-
  iris |> 
  mutate(res_stud = stud_res,
         res_stud_large = as.numeric(!between(res_stud, -2, 2)))

验证

执行代码后,可通过以下命令确认结果:

# 查看处理后数据的前几行
head(iris2)
# 检查res_stud的结构,确认已无名称属性
str(iris2$res_stud)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:07:11