R语言计算Auto数据集相关性时cor函数报'x'必须为数值错误如何解决
报错原因
这个错误是因为你选取的Auto[, -9]子集中包含非数值类型的列,无法直接计算相关系数:
- ISLR包自带的Auto数据集中,除了第9列的
name是字符串类型外,origin列默认是分类因子/整数编码的分类变量,部分版本的horsepower列会因为存在缺失值标记?被识别为字符型,都不属于可直接计算相关系数的数值类型。
解决步骤
- 先完成数据预处理,转换数据类型、过滤异常值:
# 首次运行需要先加载数据集所在包 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:自动筛选所有数值型列计算 cor(Auto[, sapply(Auto, is.numeric)]) # 方法2:手动指定需要计算的数值列 numeric_cols <- c("mpg", "cylinders", "displacement", "horsepower", "weight", "acceleration", "year", "mpg01") cor(Auto[, numeric_cols])
内容的提问来源于stack exchange,提问作者刘旭耀
相关产品推荐
相关产品推荐

