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
fooall.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)