在我的机器上,将 ~5x10^6 数值从文本文件读取到 R 中相对较慢(几秒钟,我读取了几个这样的文件),即使使用scan(..., what="numeric", nmax=5000)
或类似的技巧也是如此。Rcpp
为此类任务尝试包装器是否值得(例如Armadillo
,有一些实用程序可以读取文本文件)?或者我可能会因为预期的接口开销而浪费我的时间以获得几乎没有性能提升?我不确定当前是什么限制了速度(机器内在性能,还是其他?)这是我每天重复多次的任务,通常,文件格式始终相同,1000 列,大约 5000 行。
如果需要,这是一个可供使用的示例文件。
nr <- 5000
nc <- 1000
m <- matrix(round(rnorm(nr*nc),3),nr=nr)
cat(m[1, -1], "\n", file = "test.txt") # first line is shorter
write.table(m[-1, ], file = "test.txt", append=TRUE,
row.names = FALSE, col.names = FALSE)
更新:我尝试read.csv.sql
并load("test.txt", arma::raw_ascii)
使用了犰狳,两者都比scan
解决方案慢。