web-dev-qa-db-ja.com

Rのrbind()とbind_rows()の違い

ウェブ上で、rbind()を使用して2つのデータフレームを結合し、同じタスクがbind_rows() functionによって実行されることがわかりました。 。

その後、私はこれらの2つの機能の違いは何であり、どちらを使用する方が効率的かわかりませんか?

17
a874

いくつかの違いは別として、bind_rows over rbindを使用する主な理由の1つは、列数が異なる2つのデータフレームを結合することです。 rbindはそのような場合にエラーをスローしますが、bind_rowsは、値がデータフレームによって提供されないデータフレームの1つで欠落している列の行に「NA」を割り当てます。

次のコードを試して、違いを確認してください。

a <- data.frame(a = 1:2, b = 3:4, c = 5:6)
b <- data.frame(a = 7:8, b = 2:3, c = 3:4, d = 8:9)

2つの呼び出しの結果は次のとおりです。

rbind(a, b)
> rbind(a, b)
Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match
library(dplyr)
bind_rows(a, b)
> bind_rows(a, b)
  a b c  d
1 1 3 5 NA
2 2 4 6 NA
3 7 2 3  8
4 8 3 4  9
27

bind_rows()は、異なる列数のデータフレームを結合するという意味でより機能的ですが(列が欠落している行にNAを割り当てる)、同じデータフレームを結合する場合列、rbind()をお勧めします。

rbind()は、はるかに計算効率が高い結合しているデータが同じ方法でフォーマットされている場合で、列の数が異なると単純にエラーをスローします。ビッグデータセットの時間を大幅に節約できます。これらの状況には、rbind()を強くお勧めします。それでも、データに異なる列がある場合は、bind_rows()を使用する必要があります。

1
kss