ベテラン R ユーザーの皆さん、こんにちは。
私は R にまったく慣れていないので、プロセスを並列化する可能性があるかどうか疑問に思っています。私のデータセットは基本的に、特定のプロトコル (MODBUS/TCP) に対応するパケットを抽出した pcap ファイルから派生しています。800k を超えるパケットがあり、連続する 2 つのパケットごとに、特定の (つまり、同じ) MODBUS トランザクションのクエリ/応答に対応しています。
一部の値はクエリ/応答のいずれかに含まれているため、最初の for ループを作成しました。このループは行ごとにデータを「並べる」ため、トランザクションごとに 1 行で、両方からすべての変数が入力されます。クエリ/応答行。クエリ/応答を区別する唯一の方法は、条件付きの if ステートメントにあるソース/宛先ポート番号によるものです。
データテーブルを使用し、キーを設定し、変数を事前に割り当てています (マージされたテーブル/結果)。ベクトル (結果の data.table 内の列) に適用される関数は、かなり高速に実行されます。
私の PC は 4 つのプロセッサで debian wheezy を実行しています。依存関係があるため、並列処理を活用することは実際には不可能であると理解しています。ただし、データセット全体を分割し、それらを並行して処理してから結果をマージする方法はありますか? 実行に 3 時間以上かかりました。他に適用できる最適化があるのではないでしょうか?
ガイダンス/ポインタは大歓迎です。ありがとう!