Сравните, если два объекта данных в R равны?

Как проверить, если два объекта, например, фреймы данных равны ли значения в R?

Под значением равно я имею в виду, что значение каждой строки каждого столбца одного кадра данных равно значению соответствующей строки и столбца во втором кадре данных.

 Tyler Rinker15 мая 2012 г., 01:33
ВзглянутьВО
 David LeBauer15 мая 2012 г., 01:46
что ты имеешь в виду под "равным значением"
 42-15 мая 2012 г., 02:32
Я проголосовал за закрытие, потому что он слишком неопределенный, чтобы ответить в его текущем состоянии.
 Justin15 мая 2012 г., 01:03
?all.equal или?identical? Если это не те два, вам придется расширить свой вопрос, чтобы мы знали, что именно вы пытаетесь сравнить.

Ответы на вопрос(3)

Мы можем использовать пакет Rcompare, чтобы проверить, совпадают ли имена объекта и значения, всего за один шаг.

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.

Решение Вопроса

что значит проверить, равны ли два фрейма данных значениям, но проверить, совпадают ли значения, вот пример двух неидентичных фреймов данных с одинаковыми значениями:

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.
 Darren Cook19 июл. 2012 г., 11:08
Отметьте, что дляidentical, чтобы вернуть true, должны совпадать не только значения и имена столбцов, но и номера / имена строк. (Это меня поразило при использовании subset (); оказалось, чтоall было то, что я хотел.)
 David LeBauer15 мая 2012 г., 02:26
@ joran спасибо за указание на это, я уточнил свой ответ.
 Abe26 авг. 2016 г., 19:38
@ user4050 порядок чего? порядок значений? Вы можете отсортировать оба вектора какidentical(sort(a), sort(b)).
 Herman Toothrot25 авг. 2016 г., 15:47
@ DavidLeBauer, есть ли способ заставить идентичный игнорировать порядок?
 joran15 мая 2012 г., 02:04
В случае, если кто-то запутался, они не идентичны, потому что имена столбцов не совпадают.

идентичное все еще полезно и поддерживает практическую цель:

identical(a[, "x"], b[, "y"]) # TRUE

Ваш ответ на вопрос