R语言循环过程和readxl包的使用

本文讨论了R语言中xlsx包在Java版本更新后遇到的兼容性问题,包括安装困难、依赖的poi版本过低以及读取速度慢等。作者建议使用readxl包替代xlsx包,因为readxl包的read_xlsx函数能更好地适应高版本的Java,并提供了示例代码展示如何读取Excel文件的多个sheet并进行数据合并。此外,还介绍了获取Excel文件sheet名和数量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前R语言xlsx包的一些问题:

1)安装问题;2)poi版本过低;3)读取速度

按顺序安装解决xlsx包的安装

install.packages("rJava")

install.packages("xlsxjars")
install.packages("xlsx")

library(xlsx)
library(readxl)

 

(1)xlsx包的作者很久没有更新了,最后更新日期在2014-08-22,所依赖的poi版本是3.1(Java11),而目前电脑的版本(java15),现在的poi版本都升级为5.0.0了,造成数据读取过程中

路径不明确,读取数据也会出现一下报警信息,或者读取速度也因此受到限制。

(2)此外xlsx包的读取函数是read.xlsx(data,sheetIndex=NULL,sheetName=NULL),虽然可以指定第几个sheet或者根据sheet名字来识别表格,但是由于poi版本的限制,我们的电脑或出现

警告信息或者报错,只能通过安装低版本的java包解决,所以我建议使用readxl包中的read_xlsx(data,sheet=NULL),也比较方便。

#获取xls文件中sheet名字:

sheets=excel_sheets("C:/Users/Desktop/辽宁城市污染物2019.xlsx")

#获取xls文件中sheet数量:

length(excel_sheets("C:/Users/Desktop/辽宁城市污染物2019.xlsx"))

 

#R循环实现合并xls文件中的分表

mydata<-data.frame()

for(i in 1:length(sheets){

datai=read_xlsx("dataname",sheet=i)

mydata<-rbind(datai,mydata)

i=i+1

}

write.csv(mydata,"mydata.csv",col.names=F)

 

  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值