【问题标题】:"Error: expected <" when reading .xlsx and .xls files into R with readxl package使用 readxl 包将 .xlsx 和 .xls 文件读入 R 时出现“错误:预期 <”
【发布时间】: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 &lt;

我可以通过打开问题文件、进行任何小的编辑并保存来绕过该问题。但是,对每个文件都这样做是不可行的——我总共有 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("(?&lt;=&lt;sheets&gt;).*(?=&lt;/sheets&gt;)", 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 中的问题消失了。

标签: r excel readxl


【解决方案1】:

文件可能已损坏(即每个扩展名的文件格式不正确等),从而导致 R 打开它时出现问题。

这是编写 Excel 宏以打开、重新保存和关闭目录中每个文件的可能解决方案,如下面的“strDirectory”变量所定义。

一旦这个宏处理了目录中的所有文件,那么这些文件应该在 R 中工作。

Sub ResaveFiles()

    Dim varDirectory As Variant
    Dim flag As Boolean
    Dim i As Integer
    Dim strDirectory As String

    strDirectory = "/Users/stacktest/Downloads/"
    i = 1
    flag = True
    varDirectory = Dir(strDirectory & "*.xls*", vbNormal)

    While flag = True
        If varDirectory = "" Then
            flag = False
        Else
           Set wb = Application.Workbooks.Open(varDirectory)
           Cells(1, 1) = Cells(1, 1)
           ActiveWorkbook.Save
            ActiveWorkbook.Close
            varDirectory = Dir
            i = i + 1
        End If
    Wend
End Sub

【讨论】:

  • @Byrant,这个解决方案对你有用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
相关资源
最近更新 更多