为什么 R 中汇总和最小值的最小值不同?

问题描述 投票:0回答:1

这里使用的数据集是风险(概率),并且概率很小。  当使用R中的

summary
函数时,得到以下结果

> summary(prob_ann)

##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 0.000e+00 1.000e-16 1.034e-13 3.959e-12 7.880e-13 8.222e-10

但是,查询实际最小值会产生正确的值:

> min(prob_ann)

## [1] 1.199446e-35

我的问题是这样的: ¿为什么

summary
使用科学记数法,但仍然报告真正的零值而不是
1.199e-35
的正确值?

r quantile
1个回答
0
投票

summary
显示的最小值与实际最小值不同的原因是因为输出值的class

set.seed(123)
prob_ann <- c(1.199446e-35, runif(100, 0, 8.222e-10))

res <- summary(prob_ann); res
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
0.000e+00 2.003e-10 3.831e-10 4.059e-10 6.203e-10 8.175e-10

min(prob_ann)
[1] 1.199446e-35

class(res)
#[1] "summaryDefault" "table"

summary.default
函数的倒数第二行是:

class(value) <- c("summaryDefault", "table")

第二个参数由于

print.summaryDefault
函数而更改输出的格式:

function (x, digits = max(3L, getOption("digits") - 3L), ...) 
{
    ...
    print.table(xx, digits = digits, ...)
    invisible(x)
}

如果您想查看未格式化输出,那么,您可以使用

unlcass
:

unclass(res)
        Min.      1st Qu.       Median         Mean      3rd Qu.         Max. 
1.199446e-35 2.066278e-10 4.407913e-10 4.176800e-10 6.351261e-10 8.195258e-10
© www.soinside.com 2019 - 2024. All rights reserved.