データ フレームにロードする 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 の作成が遅いのはなぜですか?