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

R语言计算数据框行最大值结果错误,求原因及解决方法

问题原因及解决方法

问题根源

  • 你在调用read_xlsx()时设置了col_types = "text",这会强制所有列以字符类型读取(从输出里的<chr>标识也能确认这一点)。
  • 对字符型数据使用max()函数时,会按字符串字典序比较大小,而非我们需要的数值大小。比如字符串"11"和"9"比较时,因为第一个字符"1"的ASCII码小于"9",会判定"9"更大,这就导致第一行的最大值被错误识别为"9",而非实际的11。

解决方法

方法1:读取时直接识别数值类型

移除col_types = "text"参数,让readxl自动识别列的数值类型:

library(readxl)
df <- read_xlsx("Data 1.xlsx", col_names = TRUE)

如果确定所有列都是数值,也可以显式指定col_types = "numeric"。

方法2:读取后转换为数值类型再计算

如果因特殊需求必须先读成字符型,可先将数据列转换为数值类型,再计算行最大值:

# 使用dplyr包转换
library(dplyr)
df <- df %>% mutate(across(everything(), as.numeric))

# 或者使用基础R转换
df[] <- lapply(df, as.numeric)

# 重新计算行最大值
df$max <- apply(df, 1, max)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:33:19