【发布时间】:2022-01-19 21:22:12
【问题描述】:
我正在使用readxl 包和for 循环将一批excel 文件读入r。这是我的简化代码:
filelist = list.files(input.dir) #get list of excel files
for (i in seq_along(filelist)){
read_excel(filelist[i], col_names=F)
}
我可以毫无问题地读取一些文件。其他人被读取,但结果是 0x0 tibble。其他文件停止循环并强制显示错误消息:
Error: expected <
我可以通过打开问题文件、进行任何小的编辑并保存来绕过该问题。但是,对每个文件都这样做是不可行的——我总共有 1,000 多个文件。你可以找到我的 excel 文件的子集here。供您参考,“AMEX1-61-2020-PH.xlsx”是返回错误消息的问题文件之一。我正在使用readxl 1.3.1 版和 r 4.1.1 版。谢谢!
【问题讨论】:
-
嗨科比!您是否尝试使用另一个包来读取数据? (
openxlsx::read.xlsx也许?)如果是这样:您是否收到类似错误? -
在问题文件上使用
openxlsx::read.xlsx会产生以下错误:Error in read.xlsx.default(filelist[12]) : Workbook has no worksheets In addition: Warning message: In gregexpr("(?<=<sheets>).*(?=</sheets>)", workbook, perl = TRUE) : PCRE error 'UTF-8 error: illegal byte (0xfe or 0xff)' for element 1但是,我更喜欢使用read_excel(或类似的东西),因为它不需要指定文件是否为.xls 或 xlsx。 -
您确定目录中的每个文件都是 Excel 文件吗?打印文件列表进行验证。
-
@Dave2e 所有文件都是 .xls 或 .xlsx,可以毫无问题地在 excel(版本 2110,64 位,在 Windows 10 Pro 上)中打开。我在 excel 中打开文件后,R 中的问题消失了。