R语言lm函数报错‘object x not found’的解决方法咨询
解决R语言导入CSV后列名异常导致线性模型报错的问题
嘿,我之前也碰到过一模一样的坑!这大概率是**CSV文件的编码带BOM(字节顺序标记)**搞的鬼——你那个行数多的数据集,应该是用Excel这类工具保存时默认加上了UTF-8 BOM,R读取时会把这个标记当成列名的一部分,所以首列才会显示成ï..x,自然找不到x这个变量,跑lm()就报错啦。
下面给你几个靠谱的解决办法:
方法一:读取时指定编码(最推荐)
直接在read.csv里加上fileEncoding参数,指定读取带BOM的UTF-8编码:rawData <- read.csv("dataset.csv", header = TRUE, fileEncoding = "UTF-8-BOM")读取完再用
head(rawData)检查,列名应该就正常显示为x了,之后运行线性模型simple.fit = lm(x~y, data=rawData)就不会报错。方法二:读取后手动重命名列
如果方法一没生效,也可以先读取数据,再把异常的首列名改回来:rawData <- read.csv("dataset.csv", header = TRUE) # 把首列重命名为x colnames(rawData)[1] <- "x"改完列名后再执行线性模型代码,问题就能解决。
预防小技巧
以后保存CSV时,尽量选择「UTF-8无BOM」的格式:比如用Notepad++保存时选编码为「UTF-8」,或者用R自带的write.csv函数导出,避免Excel默认的带BOM编码,从根源上避免这个问题。
内容的提问来源于stack exchange,提问作者BoroBorooooooooooooooooooooooo
相关产品推荐
相关产品推荐

