Сравните, если два объекта dataframe в R равны?
Как проверить, есть ли два объекта, например. dataframes, равны значению в R?
По значению, равному, я имею в виду, что значение каждой строки каждого столбца одного кадра данных равно значению соответствующей строки и столбца во втором блоке данных.
Ответы
Ответ 1
Неясно, что значит проверить, являются ли два кадра данных "равными по значению", но для проверки, являются ли значения одинаковыми, вот пример двух неидентичных фреймов с равными значениями:
a <- data.frame(x = 1:10)
b <- data.frame(y = 1:10)
Чтобы проверить, равны ли все значения:
all(a == b) # TRUE
Чтобы проверить, идентичны ли объекты (они нет, у них разные имена столбцов):
identical(a,b) # FALSE: class, colnames, rownames must all match.
Ответ 2
Кроме того, идентичный по-прежнему полезен и поддерживает практическую цель:
identical(a[, "x"], b[, "y"]) # TRUE
Ответ 3
Мы можем использовать пакет R compare
, чтобы проверить, совпадают ли имена объекта и значения, всего за один шаг.
a <- data.frame(x = 1:10)
b <- data.frame(y = 1:10)
library(compare)
compare(a, b)
#FALSE [TRUE]#objects are not identical (different names), but values are the same.
Если мы будем заботиться только о равенстве значений, мы можем установить ignoreNames=TRUE
compare(a, b, ignoreNames=T)
#TRUE
# dropped names
Пакет имеет дополнительные интересные функции, такие как compareEqual
и compareIdentical
.