in `map()`: ℹ In index: 1. ℹ With name: 姓名. Caused by error in `lm.fit()`: ! NA/...

2025年09月20日 00:18 响应: 5.28秒 状态: success

🚨 错误信息

> map(df,~aov(formula = df$班级~df$分数,data = df)) %>% summary Error in `map()`: ℹ In index: 1. ℹ With name: 姓名. Caused by error in `lm.fit()`: ! NA/NaN/Inf in 'y' Run `rlang::last_trace()` to see where the error occurred. Warning message: In storage.mode(v) <- "double" : NAs introduced by coercion

🤖 AI解决方案

map(df,~aov(formula = df$班级~df$分数,data = df)) %>% summary
Error in `map()`:
ℹ In index: 1.
ℹ With name: 姓名.
Caused by error in `lm.fit()`:
! NA/NaN/Inf in 'y'
Run `rlang::last_trace()` to see where the error occurred.
Warning message:
In storage.mode(v) <- "double" : NAs introduced by coercion

错误翻译

在 map() 中:
ℹ 索引:1。
ℹ 名称:姓名。
由 lm.fit() 错误引起:
! 'y' 中包含 NA/NaN/Inf

原因分析

aov 函数在拟合模型时,因 df$班级 列(即模型的目标变量 'y')中存在 NANaNInf 值而失败。

解决方案

  • 检查并处理 df$班级 列中的缺失值或无效值:
  • * 删除包含 NA 的行:
            df <- na.omit(df)
            
    * 或者,使用特定值填充(如果业务逻辑允许):
            # 例如,用中位数填充(仅作示例,请根据实际情况选择填充方式)
            # df$班级[is.na(df$班级)] <- median(df$班级, na.rm = TRUE)
            
  • 确保 df$班级 是数值类型: 如果 df$班级 被错误地读取为字符型或其他类型,可能导致在计算中引入 NA。可以尝试强制转换为数值型,并检查转换后的 NA 情况。
  •     df$班级 <- as.numeric(as.character(df$班级))
        # 再次检查 NA
        sum(is.na(df$班级))
        

    预防措施

  • 在进行任何数据分析前,务必对所有涉及的列进行数据质量检查,特别是数值型列,确保没有 NANaNInf
  • 在数据预处理阶段,明确定义处理缺失值和异常值的策略,并在代码中实现。