Dav*_*uer 55
目前尚不清楚测试两个数据帧是否"值相等"但测试值是否相同意味着什么,这里是两个具有相同值的不相同数据帧的示例:
a <- data.frame(x = 1:10)
b <- data.frame(y = 1:10)
Run Code Online (Sandbox Code Playgroud)
要测试所有值是否相等:
all(a == b) # TRUE
Run Code Online (Sandbox Code Playgroud)
要测试对象是否相同(它们不是,它们具有不同的列名):
identical(a,b) # FALSE: class, colnames, rownames must all match.
Run Code Online (Sandbox Code Playgroud)
Bra*_*orn 14
此外,相同仍然有用,并支持实际目标:
identical(a[, "x"], b[, "y"]) # TRUE
Run Code Online (Sandbox Code Playgroud)
我们可以使用R包compare来测试对象的名称和值是否相同,只需一步.
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.
Run Code Online (Sandbox Code Playgroud)
如果我们只关心值的相等性,我们可以设置 ignoreNames=TRUE
compare(a, b, ignoreNames=T)
#TRUE
# dropped names
Run Code Online (Sandbox Code Playgroud)
该软件包还有其他有趣的功能,如compareEqual和compareIdentical.