R 难以理解“如何”;相同的;作品

R 难以理解“如何”;相同的;作品,r,R,关于idential()函数,我有一个可能非常愚蠢的问题 我正在编写一个脚本来测试某些值是否在我的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.

关于
idential()
函数,我有一个可能非常愚蠢的问题

我正在编写一个脚本来测试某些值是否在我的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
所以这里第180行第1列和第2列的元素等于第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(结果[“180”,1:2],结果[“183”,3:4])
[1] 属性:“
相同(结果[“180”,1:2],结果[“183”,3:4])
[1] 假的
相同(结果[“180”,1],结果[“183”,3])和相同(结果[“180”,2],结果[“183”,4])
[1] 真的
我知道all.equal会对不同的行名做出反应(尽管我不太明白为什么,我要求比较特定列中的值,而不是整行中的值)。 但是,为什么需要单独比较这些值呢?如果我使用result[180,c(1,2)]和result[183,c(3,4)],效果不会更好。如果比较超过1个值,
idential()
是否也开始使用行名?如何预防?在我的例子中,我只有两个值可以与其他两个值进行比较,但是如果要比较的字符串跨越了10列呢?我是否需要添加
&
idential()
来分别比较10列中的每一列


提前谢谢

请记住,不仅而且所有属性必须匹配
相同
才能返回
。考虑:

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

foo
all.equal
告诉您存在差异,您会惊讶于更严格的
equality
告诉您相同<代码>结果[yourrow,1:2]
是一个data.frame。如果data.frames具有不同的行名,则它们不相同。在最后一行中,您比较了没有属性的单个值。还要注意,
result[“180”,1]
result[180,1]
不一定相同(如果您的行名与示例中的1:n不同)。您可以执行
rownames(iris)顺便说一句,
?all.equal
有一个默认为TRUE的
check.attributes
参数。如果不想比较属性,可以将其设置为FALSE,例如
all.equal(结果[“180”,1:2],结果[“183”,3:4],check.attributes=FALSE)