首選方法:
使用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也不行。
總之,在讀取數據這一塊,還是需要有個系統的了解,例如掌握匹配不同數據類型的函數,能省不少事。