Разница между rbind() и bind_rows() в R

В Интернете я обнаружил, что rbind() используется для объединения двух фреймов данных, и одна и та же задача выполняется с помощью функции bind_rows().

Тогда я не понимаю, в чем разница между этими двумя функциями и которая более эффективна для использования?

Ответ 1

Помимо нескольких дополнительных отличий, одной из основных причин использования bind_rows rbind является объединение двух фреймов данных, имеющих разное количество столбцов. rbind выдает ошибку, тогда как bind_rows назначает " 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)

Результаты для двух вызовов следующие:

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

Ответ 2

Хотя bind_rows() является более функциональным в том смысле, что он будет объединять фреймы данных с различным количеством столбцов (назначая NA для строк, в которых эти столбцы отсутствуют), если вы комбинируете фреймы данных с одинаковыми столбцами, я бы порекомендовал rbind().

rbind() гораздо более эффективен в вычислительном отношении в тех случаях, когда объединяемые данные форматируются одинаково, и он просто выдает ошибку, когда число столбцов отличается. Это сэкономит вам много времени для больших наборов данных. Я очень рекомендую rbind() для этих ситуаций. Тем не менее, если ваши данные имеют разные столбцы, вы должны использовать bind_rows().