Вопрос по dataframe, r – Сравните, если два объекта данных в R равны?
Как проверить, если два объекта, например, фреймы данных равны ли значения в R?
Под значением равно я имею в виду, что значение каждой строки каждого столбца одного кадра данных равно значению соответствующей строки и столбца во втором кадре данных.
?all.equal
или?identical
? Если это не те два, вам придется расширить свой вопрос, чтобы мы знали, что именно вы пытаетесь сравнить.
что значит проверить, равны ли два фрейма данных значениям, но проверить, совпадают ли значения, вот пример двух неидентичных фреймов данных с одинаковыми значениями:
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.
identical
, чтобы вернуть true, должны совпадать не только значения и имена столбцов, но и номера / имена строк. (Это меня поразило при использовании subset (); оказалось, чтоall
было то, что я хотел.)
identical(sort(a), sort(b))
.
Мы можем использовать пакет 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
.