【发布时间】:2019-12-06 17:51:18
【问题描述】:
我有多个 .xls (~100MB) 文件,我想将多个工作表(从每个工作表)加载到 R 作为数据框。我尝试了各种功能,例如xlsx::xlsx2 和XLConnect::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 尚未解决。
【问题讨论】: