如何解决将损坏的 xls 文件加载到 r 中,而无需手动更改文件类型
utils::download.file(
url = 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.PHP',destfile = 'C:/users/arthu/Desktop/fines.rar',mode = "wb"
)
解压并尝试将其加载到 R 后:
utils::unzip(
zipfile = './fines.rar',exdir = './ibama_data'
)
dados <- readxl::read_xls(
"./ibama_data/rel_areas_embargadas_0-65000_2020-12-10_080019.xls"),skip = 6,col_type = c(rep("guess",13),"date","guess","date")
)
我得到 libxls error: Unable to open file
。
如果我尝试将文件重命名为 .xlsx,如下所示,在使用 readxl::read_excel
读取它时会出现评估错误,说 unable to open file
file <- file.rename(
from = "./Desktop/ibama_data/rel_areas_embargadas_0-65000_2020-12-10_080019.xls",to = "./Desktop/ibama_data/test.xlsx"
)
但是,如果我手动打开这样的文件,excel 会向我发出警告,指出该文件的扩展名与其类型不匹配。将其保存为 .xlsx 后,我终于可以使用 read_excel
如果我想编写一个包含从网络下载此类数据然后将其加载到 R 中的函数的包,我该如何解决这个问题?
编辑
解决方法
您尝试读取的 .xls
文件不是 Excel 文档,而是 HTML 表格。
您可以使用 XML
包阅读它:
library(XML)
doc <- htmlParse('rel_areas_embargadas_0-65000_2021-01-13_080018.xls')
tableNode <- getNodeSet(doc,'//table')
data <- XML::readHTMLTable(tableNode[[1]])
#Store header
header <- data[1:5,]
#Store colnames
colnames <- data[6,]
#Remove header
data <- data[-1:-6,]
#Set colnames
colnames(data)<-colnames
head(data)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。