web-dev-qa-db-ja.com

Rの2つのデータフレームオブジェクトが等しいかどうかを比較しますか?

2つのオブジェクト、たとえばデータフレーム、Rの値は等しいですか?

値が等しいということは、1つのデータフレームの各列の各行の値が、2番目のデータフレームの対応する行と列の値に等しいことを意味します。

45
mindless.panda

2つのデータフレームが「値が等しい」かどうかをテストすることの意味は明確ではありませんが、値が同じかどうかをテストすることは、同じ値を持つ2つの非同一データフレームの例です。

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.
54
David LeBauer

さらに、同一は依然として有用であり、実用的な目標をサポートします。

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

Rパッケージcompareを使用して、オブジェクトの名前と値が同じかどうかを1ステップでテストできます。

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

パッケージには、compareEqualcompareIdenticalなどの興味深い関数が追加されています。

7
milan