关于identical()
函数我可能有一个非常愚蠢的问题。
我正在编写一个脚本来测试我的data.frame中是否有多次值重新组合它们。我将4比2的值2比较。
我在我的表中找到了一些,并想测试我的脚本。这是data.frame的一部分:
Ret..Time Mass Ret..Time Mass deltaRT deltaMZ
178 3.5700 797.6324 3.4898 797.6018 0.0802 0.0306
179 3.6957 797.6519 3.7502 797.5798 0.0545 0.0721
180 3.3526 797.6655 3.2913 797.5980 0.0613 0.0675
182 3.1561 797.7123 3.1650 797.5620 0.0089 0.1503
182.1 3.1561 797.7123 3.0623 797.6174 0.0938 0.0949
183 3.4495 797.8207 3.3526 797.6655 0.0969 0.1552
所以这里第1行和第2行的第180行的元素与行“183”的3和4的元素相同。
这是我得到的,让我困惑的是:
all.equal(result["180",1:2],result["183",3:4])
[1] "Attributes: < Component “row.names”: 1 string mismatch >"
identical(result["180",1:2],result["183",3:4])
[1] FALSE
identical(result["180",1],result["183",3]) & identical(result["180",2],result["183",4])
[1] TRUE
我得到all.equal对不同的rownames做出反应(虽然我真的不明白为什么,我要求比较特定列中的值,而不是整行)。
但为什么同样需要分别比较这些值呢?如果我使用结果[180,c(1,2)]和结果[183,c(3,4)],它不会更好。如果我比较多于1个值,identical()
是否也开始使用rownames?怎么预防?在我的情况下,我只有2个值可以与其他2个值进行比较,但是如果要比较的字符串跨越10列呢?我是否需要添加&
和identical()
来分别比较10列中的每一列?
提前致谢!
答案 0 :(得分:1)
请注意,值以及所有属性必须与identical
匹配才能返回TRUE
。考虑:
foo<-1
bar<-1
dim(foo)<-c(1,1)
identical(foo,bar)
[1] FALSE