r - 为什么 10 的幂以科学记数法打印为 5 次方?

标签 r scientific-notation

我想知道 10 的幂是否与控制台中科学计数法的打印相关以及如何相关。我搜索了 R 文档,但没有找到任何相关的内容,或者我真正理解的内容。

首先,我的 scipendigits 设置是

unlist(options("scipen", "digits"))
# scipen digits 
#      0      7 

现在,通常会打印 10 的 4 次方,然后打印到 5 次方的科学记数法。

10^(1:4)
# [1]    10   100  1000 10000
10^(1:5)
# [1] 1e+01 1e+02 1e+03 1e+04 1e+05

有趣的是,对于一些其他大于 10 的数字,这种情况不会发生。

11^(1:5)
# [1]     11    121   1331  14641 161051

从以下内容来看,5 位数字似乎很重要。

100^(1:2)
# [1]   100 10000
100^(1:3)
# [1] 1e+02 1e+04 1e+06

所以我的问题是:

为什么科学记数法在 10 的 4 次方和 5 次方之间激活,而不是在其他数字上激活?数字5重要吗?此外,为什么是 5,而不是更接近最大数字选项 22 的数字?

最佳答案

嗯,答案实际上就在scipen的定义中。在?options ,尽管如果不看一些例子就很难理解它的含义:

‘scipen’: integer. A penalty to be applied when deciding to print numeric values in fixed or exponential notation. Positive values bias towards fixed and negative towards scientific notation: fixed notation will be preferred unless it is more than ‘scipen’ digits wider.

要了解这意味着什么,请检查以下三对完全相同的数字。在前两种情况下,固定表示法的字符宽度小于或等于科学计数法的宽度,因此首选固定表示法

但是,在第三种情况下,固定表示法更宽(即“比 0 个数字更宽”),因为 5 个零相当于比使用 e+nn 表示相同值的 4 个字符更多的字符。 。因此,在这种情况下,首选科学计数法

1e+03
1000
# [1] 1000

1e+04
10000
# [1] 10000

1e+05
100000      ## <- wider
# [1] 1e+05

接下来,检查一些也以大量零结尾的数字,但其在科学记数法中的表示需要使用 . 。对于这些数字,一旦有 6 个或更多零(即超过 1 . 和字符 e+nn 所占的 5 个字符),将使用科学记数法。

1.1e+06
1100000
# [1] 1100000


1.1e+07
11000000     ##  <- wider
# [1] 1.1e+07

对于大多数其他数字来说,关于权衡的推理会变得有点棘手,其中 options("scipen") 的值都为这些数字。和options("digits")发挥作用,但总体思路是完全相同的。

要查看一些稍微令人惊讶的复杂情况,您可能需要将以下内容粘贴到控制台中(也许在首先尝试预测每个系列中的哪个位置将发生转换为科学记数法之后)。

100001
1000001
10000001
100000001
1000000001
10000000001
100000000001
1000000000001

111111
1111111
11111111
111111111
1111111111
11111111111
111111111111
1111111111111

关于r - 为什么 10 的幂以科学记数法打印为 5 次方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859609/

相关文章:

r - 列出 Shiny 的下拉列表selectInput

java - 打印 2 个具有相同指数的 double 的最佳方法

javascript - 十进制表示法的科学记数法在 Highcharts 中不起作用

regex - R 正则表达式匹配从 HTML 中删除注释脚本

regex - 带有xpath或regex的R中的Web抓取(可能)格式不正确的HTML

r - 使用 dplyr::mutate/mutate_if 的具有多个条件的 Ifelse 语句

html - R knitr 在表头 kable() 中添加换行符

python - 将文本文件的列转换为科学记数法

Matlab,如何调整图形上的轴值(科学记数法 - 精度不够)

excel - 这个值在Excel中意味着什么1.845E-07?