首选方法:
使用data.table包中的fread函数:
fread(input, file, sep="auto", sep2="auto", dec=".", quote="\"",
nrows=Inf, header="auto",
na.strings=getOption("datatable.na.strings","NA"), # due to change to ""; see NEWS
stringsAsFactors=FALSE, verbose=getOption("datatable.verbose", FALSE),
skip="__auto__", select=NULL, drop=NULL, colClasses=NULL,
integer64=getOption("datatable.integer64", "integer64"),
col.names,
check.names=FALSE, encoding="unknown",
strip.white=TRUE, fill=FALSE, blank.lines.skip=FALSE,
key=NULL, index=NULL,
showProgress=getOption("datatable.showProgress", interactive()),
data.table=getOption("datatable.fread.datatable", TRUE),
nThread=getDTthreads(),
logical01=getOption("datatable.logical01", FALSE), # due to change to TRUE; see NEWS
autostart=NA
)
加粗的部分是常用的
eg:
data <- fread('377/377_lj.csv',data.table = T)
读取的速度,比一众read.函数快了不止一倍。但不能读取xlsx格式的数据,支持csv格式的数据。
使用openxlsx包中的read.xlsx,这个函数对十万以内的较为复杂的数据还是没有任何问题的,数据量超过10w就会有那么一点吃力了,到70w时,基本上就是废掉的状态。
针对读取大量的数据问题,
翻了很多帖子,说要装/更新rtools的,并没有用,再说了,rtools是使用openxlsx必装的,貌似跟打包有关系。有说要用read.xl包的,试来试去,还不如read.xlsx,最终,还是fread最好,不过要事先转为csv。
另外read.xl是有其他优势的,例如它可以读取xls格式的数据,而openxlsx就不行,他可以自动把时间转为正常的格式,openxlsx也不行。
总之,在读取数据这一块,还是需要有个系统的了解,例如掌握匹配不同数据类型的函数,能省不少事。