使用R语言gdata包read.xls读取xls文件时如何处理文本中的引号?
解决read.xls读取含英寸引号的xls文件出错问题
别担心,新手遇到这种特殊字符导致的读取问题太常见了!我来帮你搞定这个双引号引发的字段合并和EOF错误~
方法一:调整gdata包read.xls的参数
gdata的read.xls底层其实是先把Excel文件转成CSV,再用read.table解析,这时候双引号会被默认当成字符串的边界标记,直接搞乱数据结构。你可以通过设置quote参数禁用引号识别,让它把双引号视为普通文本处理:
# 禁用引号解析,保留双引号作为普通字符 V2 <- read.xls("file.xls", header = TRUE, quote = "", stringsAsFactors = FALSE)
如果还是有异常,可以尝试明确指定分隔符(转CSV时常用制表符分隔):
V2 <- read.xls("file.xls", header = TRUE, quote = "", sep = "\t", stringsAsFactors = FALSE)
方法二:用更可靠的readxl包替代(推荐)
gdata包依赖Perl环境,处理特殊字符时容易出兼容问题,现在更推荐用readxl包——它专门为读取Excel文件设计,不需要额外依赖,解析特殊字符的稳定性拉满:
- 先安装并加载包:
install.packages("readxl") library(readxl)
- 读取文件(默认会正确识别带双引号的字符串,不会出现字段合并或EOF错误):
V2 <- read_excel("file.xls", col_names = TRUE)
这个方法能避开转CSV的中间步骤,直接读取Excel的二进制格式,对特殊字符的兼容性比gdata好太多,是现在读取Excel文件的主流选择。
内容的提问来源于stack exchange,提问作者Statsanalyst
相关产品推荐
相关产品推荐

