我有一个程序可以输出要加载到数据框中的 CSV 数据行。我目前像这样加载数据:
tmpFilename <- "tmp_file"
system(paste(procName, ">", tmpFilename), wait=TRUE)
myData <- read.csv(tmpFilename) # (I also pass in colClasses and nrows for efficiency)
但是,我认为将输出重定向到一个文件只是为了从中读取是低效的(程序吐出大约 30MB,所以我想以最佳性能处理它)。我认为textConnection
会解决这个问题,所以我尝试了:
con <- textConnection(system(procName, intern=TRUE))
myData <- read.csv(con)
但是,这运行速度要慢得多,而第一个解决方案会随着输入大小线性下降,但该textConnection
解决方案的性能似乎呈指数级下降。最慢的部分是创建textConnection
. read.csv
这里实际上比第一个解决方案完成得更快,因为它是从内存中读取的。
那么我的问题是,read.csv
就速度而言,创建一个文件只是为了在它上面运行是我最好的选择吗?有没有办法加快 textConnection 的创建速度?奖金:为什么创建 textConnection 这么慢?