今天找了好多包来快速读取数量量比较大的excel包,但是总是出现OutOfMemoryError (Java): GC overhead limit exceeded,内存溢出报错。找到了两个R包可以解决该问题
目前找到三个包可以读取excel数据。
1 ,读取excel文件的包:xlsx包 只能读取".xlsx"格式的包
install.packages("xlsx")
library(xlsx)
read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL,
startRow=NULL, endRow=NULL, colIndex=NULL,
as.data.frame=TRUE, header=TRUE, colClasses=NA,
keepFormulas=FALSE, encoding="unknown", ...)
这个包只能读取数据量不大的excel数据
2,XLConnect包
library("XLConnectJars")
library("XLConnect")
##连接excel文件
connect<-loadWorkbook("E:\wang\1.xlsx")
#读取,A为Sheet名
readWorksheet
(connect,
'A'
)
library(readxl)
x<-read_excel("E:\wang\1.xlsx")还可以读取“xls”的excel文件,
其他参数可以自己查询 ?read_excel()
此函数可以快速读取excel的大量数据,且不会出现以上的内存溢出错误
4,openxlsx包
该包也能够读取大量的excel文件而不会出现内存溢出的错误,且该包可以在低版本的R中使用
library(openxlsx)
x<-read.xlsx("E:\wang\1.xlsx",1)
read.xlsx(xlsxFile, sheet = 1, startRow = 1, colNames = TRUE,
skipEmptyRows = TRUE, rowNames = FALSE, detectDates = FALSE,
rows = NULL, cols = NULL)
注意:在安装好xlsx包之后,在安装XLConnect包时可能会出现错误,由于xlsx可能把有些XLConnect包中的函数给屏蔽掉了,此时需要移除xlsx包,remove.packages("xlsx")即可