1

多数の CSV ファイル (~50) を読み込み、多数の操作を実行してから、使用write.csv()してマスター ファイルを出力したいと考えています。CSV ファイルは大きい側 (~80 Mb) にあるため、R の 2 つのインスタンスを開いて、一方のインスタンスで CSV の半分を読み取り、もう一方のインスタンスで半分を読み取る方が効率的ではないかと考えていました。次に、それぞれを大きな CSV に書き込み、両方の CSV を読み込み、マスター CSV に結合します。R の 2 つのインスタンスを実行すると、すべての csv を読み込むのにかかる時間が改善されるかどうかは誰にもわかりませんか?

4Gb RAM を搭載した Macbook Pro OSX 10.6 を使用しています。

4

2 に答える 2

2

コードの実行時間の大部分がファイルの読み取りに費やされる場合、2 つの R プロセスがディスク I/O で競合するため、おそらく遅くなります。しかし、時間の大部分が「多数の操作の実行」に費やされると、より高速になります。

于 2013-07-18T17:22:44.793 に答える
1

read.table() および関連は非常に遅くなる可能性があります。並列化の恩恵を受けることができるかどうかを判断する最善の方法は、R スクリプトとファイルの基本的な読み取りの時間を計ることです。たとえば、端末では次のようになります。

time cat *.csv > /dev/null

「cat」時間が大幅に短い場合、問題は I/O バウンドではなく、並列化できます。その場合、おそらく並列パッケージを使用する必要があります。

library(parallel)
csv_files <- c(.....)
my_tables <- mclapply(csv_files, read.csv)
于 2013-07-18T17:54:28.123 に答える