Compare if two dataframe objects in R are equal?

杀马特。学长 韩版系。学妹 提交于 2019-11-29 22:41:41

It is not clear what it means to test if two data frames are "value equal" but to test if the values are the same, here is an example of two non-identical dataframes with equal values:

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

To test if all values are equal:

all(a == b) # TRUE

To test if objects are identical (they are not, they have different column names):

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

In addition, identical is still useful and supports the practical goal:

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

We can use the R package compare to test whether the names of the object and the values are the same, in just one step.

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.

In case we only care about equality of the values, we can set ignoreNames=TRUE

compare(a, b, ignoreNames=T)
#TRUE
#  dropped names

The package has additional interesting functions such as compareEqual and compareIdentical.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!