检查返回false的两个等效值

时间:2017-09-17 17:25:26

标签: r

我已经通过两种方式计算了一组数据的样本方差,甚至通过统计教科书中的公式来计算分配。我已将它们分配给var.1var.2,并返回相同的值。但是,当我使用var.1==var.2相互检查时,我收到了FALSE的回复。有人可以向我解释原因吗?这是一些可重现的代码:

> dat <- data.frame("x"=c(180.5,181.3,181.7,
                     182.1,180.9,182.1,181.6,
                     180.3,182.6,181.7,181.6,180.5))
> print(dat)
       x
1  180.5
2  181.3
3  181.7
4  182.1
5  180.9
6  182.1
7  181.6
8  180.3
9  182.6
10 181.7
11 181.6
12 180.5

> var.1 <- sum((dat$x-mean(dat$x))^2)/(12-1)
> var.2 <- ((sum(dat$x^2))-((sum(dat$x)^2)/12))/(12-1)
> print(var.1)
[1] 0.5244697
> print(var.2)
[1] 0.5244697
> var.1 == var.2
[1] FALSE

此外,identical(var.1,var.2)会返回FALSE,但all.equal(var.1,var.2)会返回TRUE

> identical(var.1,var.2)
[1] FALSE
> all.equal(var.1,var.2)
[2] TRUE

我已经查看了这些功能的文档,但我仍然很困惑。有人可以详细说明吗?

0 个答案:

没有答案