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

R语言计算Auto数据集相关性时cor函数报'x'必须为数值错误如何解决

报错原因

这个错误是因为你选取的Auto[, -9]子集中包含非数值类型的列,无法直接计算相关系数:

  • ISLR包自带的Auto数据集中,除了第9列的name是字符串类型外,origin列默认是分类因子/整数编码的分类变量,部分版本的horsepower列会因为存在缺失值标记?被识别为字符型,都不属于可直接计算相关系数的数值类型。

解决步骤

  1. 先完成数据预处理,转换数据类型、过滤异常值:
# 首次运行需要先加载数据集所在包
library(ISLR)
data("Auto")

# 处理horsepower列的异常标记,转成数值型
Auto$horsepower <- as.numeric(as.character(Auto$horsepower))
# 过滤含缺失值的行
Auto <- na.omit(Auto)

# 构造mpg01标签
mpg01 <- rep(0, length(Auto$mpg))
mpg01[Auto$mpg > median(Auto$mpg)] <- 1
Auto <- data.frame(Auto, mpg01)
  1. 计算相关系数时仅选取数值列:
# 方法1:自动筛选所有数值型列计算
cor(Auto[, sapply(Auto, is.numeric)])

# 方法2:手动指定需要计算的数值列
numeric_cols <- c("mpg", "cylinders", "displacement", "horsepower", "weight", "acceleration", "year", "mpg01")
cor(Auto[, numeric_cols])

内容的提问来源于stack exchange,提问作者刘旭耀

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:15:03