如何解决Windows环境下读取TXT文件时的make.names报错问题
解决read.delim读取TXT时的编码与空值错误
错误原因
- 报错里的
<ff><fe>是UTF-16LE编码的字节顺序标记(BOM),说明你的machine.txt采用UTF-16编码,而read.delim默认使用Windows系统本地编码(如GBK),编码不匹配导致解析失败。 - 「嵌入空值」的警告也是编码不匹配引发的,R把UTF-16的字节错误识别成了空字符。
解决方案
方法1:指定编码直接读取
在read.delim中添加encoding参数,明确指定文件为UTF-16LE编码:
machine_delim <- read.delim("C:/KOMSTAT/mini project/machine.txt", header = TRUE, sep = "\t", encoding = "UTF-16LE")
若仍有问题,可尝试encoding = "UTF-16",让R自动识别字节顺序。
方法2:手动转换文件编码(Windows)
无需修改代码,直接将文件转成UTF-8编码:
- 用记事本打开
machine.txt - 点击「文件」→「另存为」
- 编码选择「UTF-8」,覆盖原文件
- 再用默认方式读取:
machine_delim <- read.delim("C:/KOMSTAT/mini project/machine.txt", header = TRUE, sep = "\t")
方法3:使用readr包的函数(更省心)
readr包的文件读取函数能自动检测编码和BOM,适合频繁处理编码问题的场景:
# 首次使用需安装包 install.packages("readr") library(readr) # read_tsv专门处理制表符分隔的文件 machine_delim <- read_tsv("C:/KOMSTAT/mini project/machine.txt")
内容的提问来源于stack exchange,提问作者aaaaaaab
相关产品推荐
相关产品推荐

