Разница между 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()
.