比较R中两个数据框对象是否相等?

如何检查两个对象,例如数据框,在R中的值是否相等?

通过值相等,我的意思是一个dataframe的每一列的每一行的值等于第二个dataframe中对应的行和列的值。

目前尚不清楚两个dataframe是“值相等”还是testing值是否相同意味着什么,下面是两个具有相同值的不相同dataframe的例子:

 a <- data.frame(x = 1:10) b <- data.frame(y = 1:10) 

要testing所有值是否相等:

 all(a == b) # TRUE 

要testing对象是否相同(它们不是,它们具有不同的列名称):

 identical(a,b) # FALSE: class, colnames, rownames must all match. 

此外,相同的仍然有用并支持实际的目标:

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

我们可以使用R包compare来testing对象的名称和值是否相同,只需一步。

 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 

该包有其他有趣的function,如compareEqualcompareIdentical