无法理解"相同"作品

时间:2015-01-28 09:35:23

标签: r

关于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列中的每一列?

提前致谢!

1 个答案:

答案 0 :(得分:1)

请注意,以及所有属性必须与identical匹配才能返回TRUE。考虑:

 foo<-1
 bar<-1
 dim(foo)<-c(1,1)
identical(foo,bar)
[1] FALSE