R 理解base::idential()--为什么是;更安全;?
我一直听说R 理解base::idential()--为什么是;更安全;?,r,R,我一直听说idential()比=更“安全”。但是,把两者都玩弄在一起,似乎是后者而不是前者取得了想要的结果。我假设这与nrow()生成的对象的属性有关,但最好在下面的示例中解释一下为什么会发生这种情况: > identical(3653510+2751069, 6404579) [1] TRUE > identical((3653510+nrow(df)), nrow(df2)) [1] FALSE > nrow(df) [1] 2751069 > nrow(df2)
idential()
比=
更“安全”。但是,把两者都玩弄在一起,似乎是后者而不是前者取得了想要的结果。我假设这与nrow()
生成的对象的属性有关,但最好在下面的示例中解释一下为什么会发生这种情况:
> identical(3653510+2751069, 6404579)
[1] TRUE
> identical((3653510+nrow(df)), nrow(df2))
[1] FALSE
> nrow(df)
[1] 2751069
> nrow(df2)
[1] 6404579
> nrow(df2)-nrow(df)
[1] 3653510
> (3653510+nrow(df))==nrow(df2)
[1] TRUE
总之,我有两个问题:
idential()
发生了什么这可能是一种属性差异。e、 g
n1 <- 2751069
n2 <- 6404579
identical((3653510 + n1), n2)
#[1] TRUE
使用all.equal
,我们还可以指定check.attributes=FALSE
n2 <- 6404579L
identical((3653510 + n1), n2)
#[1] FALSE
all.equal((3653510 + n1), n2, check.attributes = FALSE)
#[1] TRUE
尝试使用
all.equal
<代码>相同还检查属性。。。因此,numeric
和int
之间可能存在差异,即类(3653510+2751069);类别(6404579);等级(3653510+nrow(df));类别(nrow(df2))