gpt4 book ai didi

readxl::read_xls 返回 "libxls error: Unable to open file"

转载 作者:行者123 更新时间:2023-12-03 14:32:46 48 4
gpt4 key购买 nike

我有多个 .xls (~100MB) 文件,我想将多个工作表(从每个工作表)作为数据框加载到 R 中。我试过各种功能,如xlsx::xlsx2XLConnect::readWorksheetFromFile ,两者总是运行很长时间(> 15分钟)并且永远不会完成,我必须强制退出 RStudio 才能继续工作。

我也试过gdata::read.xls ,它确实完成了,但是每张纸需要超过 3 分钟,并且不能一次提取多张纸(这对加快我的管道非常有帮助),例如 XLConnect::loadWorkbook能够。

执行这些函数所需的时间(我什至不确定如果我让它们运行更长时间,前两个函数是否会完成)对于我需要同时处理许多文件的管道来说太长了。有没有办法让这些更快/完成?

在几个地方,我看到了使用函数 readxl::read_xls 的建议。 ,这似乎被广泛推荐用于此任务,并且每张纸应该更快。然而,这给了我一个错误:

> # Minimal reproducible example:
> setwd("/Users/USER/Desktop")
> library(readxl)
> data <- read_xls(path="test_file.xls")
Error:
filepath: /Users/USER/Desktop/test_file.xls
libxls error: Unable to open file

我还进行了一些基本测试以确保文件存在并且格式正确:
> # Testing existence & format of the file
> file.exists("test_file.xls")
[1] TRUE
> format_from_ext("test_file.xls")
[1] "xls"
> format_from_signature("test_file.xls")
[1] "xls"
test_file.xls上面使用的可用 here .
在使第一个函数运行得更快或 read_xls 方面的任何建议都将不胜感激。完全运行 - 谢谢!

更新:

似乎有些用户可以使用 readxl::read_xls 打开上面的文件。在 Mac 和 Windows 上使用最新版本的 R , Rstudio , 和 readxl . issue has been posted on the readxl GitHub并且还没有解决。

最佳答案

我下载了您的数据集并以这种方式读取了每个 Excel 工作表(例如,对于工作表“Overall”和“Area”):

install.packages("readxl")
library(readxl)
library(data.table)

dt_overall <- as.data.table(read_excel("test_file.xls", sheet = "Overall"))
area_sheet <- as.data.table(read_excel("test_file.xls", sheet = "Area"))

最后,我得到这样的 dt (例如,“区域”表只有部分数据集):

enter image description here

同样,您可以使用 read_xls代替函数 read_excel .

我检查了一下,它也可以正常工作,甚至更快一些,因为 read_excelread_xls 的包装器和 read_xlsx来自 readxl 的函数包裹。

此外,您可以使用 excel_sheets函数来自 readxl包以读取您的 Excel 文件的所有工作表。

更新

基准测试由 microbenchmark 完成用于以下包/功能的包: gdata::read.xls , XLConnect::readWorksheetFromFilereadxl::read_excel .

但是 XLConnect它是基于 Java 的解决方案,因此需要大量 RAM。

enter image description here

关于readxl::read_xls 返回 "libxls error: Unable to open file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59218057/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com