【问题标题】:Round numbers in output to show small near-zero quantities as zero输出中的四舍五入以将接近零的小量显示为零
【发布时间】:2013-03-21 21:29:32
【问题描述】:

我希望我的 R 控制台的输出看起来可读。为此,我希望 R 将我所有的数字四舍五入到最接近的 N 位小数。我取得了一些成功,但并不完全奏效:

> options(scipen=100, digits=4)
> .000000001
[1] 0.000000001
> .1
[1] 0.1
> 1.23123123123
[1] 1.231

我希望 0.000000001 显示为简单的 0。如何做到这一点?让我更具体一点:我想要对整个 R 会话进行全局修复。我意识到我可以通过四舍五入来开始修改它们,但它没有简单地为整个会话设置东西有用。

【问题讨论】:

  • 在我看来,将0.000000001 显示为0 是不可读的,这只是一种误导(这种情况下科学记数法有什么问题?)
  • 当我运行回归时,我的变量往往是scaled,所以 0.000000001 实际上是零(微不足道的 tstat)但是当你有它显示为 1e-9 时只是不可读一堆数字,有的用 1e-9 显示,有的用 1e0 显示(这实际上很重要)
  • 你如何输出你的回归?无论您使用什么功能,它内部都有一个打印命令。在该打印命令中,根据需要插入 round(x, 4)
  • @RicardoSaporta 和 Greg Snow 的结合会给你答案。

标签: r output rounding precision significant-digits


【解决方案1】:

查看?options,特别是digitsscipen 选项。

【讨论】:

  • 你能说得更具体点吗?显然我已经看过那些你可以从问题中看到的......
【解决方案2】:

试试

sprintf("%.4f", 0.00000001)
[1] "0.0000"

【讨论】:

  • 但这并不是发布者想要的全局修复。
  • 谢谢,但正如 Tyler 所说,我希望在会话中做一次,而不是每次进行回归时都进行舍入
【解决方案3】:

结合 Greg Snow 和 Ricardo Saporta 已经给你的答案以获得正确答案:options('scipen'=+20) and options('digits'=2),结合 round(x,4)

round(x,4) 将舍入接近零的小数量。

要么对回归结果进行一次四舍五入并将其存储:

x <- round(x, 4)

...否则是的,如果您不想存储其舍入值,则每次显示少量时都必须这样做。在您的情况下,既然您说接近零的小量有效地表示零,那您为什么不直接四舍五入呢?

如果由于某种原因您需要同时保留精确和舍入的版本,那么就这样做。

x.rounded <- round(x, 4)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多