比较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,如compareEqual
和compareIdentical
。