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

R读取txt运行回归报Non-numeric argument to mathematical function如何解决

报错原因分析

触发该报错的直接原因是log()函数只能接收数值型输入,你传入的e29[, 1]不属于数值类型,无法执行对数运算。

根本原因是读取数据集时参数设置错误:你调用read.table时设置了head = F(即不把第一行识别为表头),但该数据集的第一行本身就是列名字符串,读入时R会将这行字符串作为普通数据存入各列,导致原本全为数值的列因为混入了字符串内容,被自动判定为字符型或因子型,自然无法传入数学函数执行计算。

问题验证

你可以运行以下代码确认上述判断:

# 查看数据集各列类型和前几行数据
str(e29)
head(e29)

运行后可以看到第一行是字符串格式的列名,第1、4、7列的类型都不是数值型。

解决方法

修改read.table的表头识别参数,将head = F改为head = T,正确识别表头即可,修正后的完整代码如下:

e29 <- read.table("http://www.stat.nthu.edu.tw/~swcheng/Teaching/stat5410/data/E2.9.txt", head = T, fill = T)
regr_e29 <- lm(log(e29[ ,7]) ~ log(e29[ ,1]) + log(e29[ ,4]), data = e29)
summary(regr_e29)

内容的提问来源于stack exchange,提问作者Jennie C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:24:03