[解決済み] なぜrbindlistはrbindより「良い」のですか?
質問
のドキュメントを見ています。
data.table
のドキュメントを読んでいて、また、ここ SO でのいくつかの会話から気づいたのですが
rbindlist
よりも優れていると思われます。
rbind
.
私は、なぜ
rbindlist
よりも
rbind
で、どのようなシナリオで
rbindlist
が本当に優れているのは
rbind
?
メモリ使用量にメリットはありますか?
どのように解決するのですか?
rbindlist
は、最適化されたバージョンの
do.call(rbind, list(...))
を使用すると遅いことで知られています。
rbind.data.frame
本当に優れているのはどこなのか
どこが得意なのかを示すいくつかの質問
rbindlist
はどこにあるのでしょうか?
data.frameのリストを行単位でベクトル化した高速マージ
do.callとldplyを用いた長いdata.frameのリスト(~100万)から単一のdata.frameへの変換の不具合
これらは、どれだけ速くなるかを示すベンチマークがあります。
rbind.data.frameが遅いのには理由があります。
rbind.data.frame
は多くのチェックを行い、名前によってマッチングします。(すなわち、rbind.data.frameは、カラムが異なる順番で並んでいるかもしれないという事実を考慮し、名前によってマッチングします)。
rbindlist
はこのようなチェックを行わず、位置によって結合します。
eg
do.call(rbind, list(data.frame(a = 1:2, b = 2:3), data.frame(b = 1:2, a = 2:3)))
## a b
## 1 1 2
## 2 2 3
## 3 2 1
## 4 3 2
rbindlist(list(data.frame(a = 1:5, b = 2:6), data.frame(b = 1:5, a = 2:6)))
## a b
## 1: 1 2
## 2: 2 3
## 3: 1 2
## 4: 2 3
rbindlist のその他の制限事項
それは
で使用されます。
に対処するのに苦労した。
factors
を処理するのに苦労していたのですが、バグが修正されたためです。
rbindlist 2つのdata.tablesで、一方がfactorを持ち、もう一方が列のcharacter typeを持つ場合。 ( バグ番号 2650 )
カラム名が重複する問題がある
参照 Warning message: in rbindlist(allargs) : coercionで導入されたNA: data.tableのバグの可能性? ( バグ番号 2384 )
rbind.data.frameのローネームはイライラさせることがあります。
rbindlist
を扱うことができます。
lists
data.frames
と
data.tables
というように、ローネームを含まないdata.tableが返されます。
を使用すると、rownameの混乱に巻き込まれる可能性があります。
do.call(rbind, list(...))
を見る
do.call内でrbindを使用する際、行の名前を変更しないようにするにはどうすればよいですか?
メモリ効率
メモリに関して
rbindlist
が実装されているのは
C
で実装されているため、メモリ効率が良く、また
setattr
を使用して参照によって属性を設定します。
rbind.data.frame
が実装されているのは
R
で実装されており、多くの代入を行い、また
attr<-
(そして
class<-
と
rownames<-
はすべて、作成された data.frame のコピーを (内部的に) 作成します。
関連
-
R言語のエラーメッセージと関連する解決策
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] なぜ `[`] は `subset` よりも優れているのですか?
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] 先頭と末尾の空白を削除するにはどうしたらよいですか?
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
-
[解決済み] 2012年、なぜpythonのpandasマージはRのdata.tableマージより速かったのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン