强制R不使用指数表示法(例如e + 10)?

时间:2012-02-22 15:24:34

标签: r number-formatting options scientific-notation defaults

我可以强制R使用常规数字而不是使用e+10 - 如符号吗?我有:

1.810032e+09
# and 
4

在同一个矢量中,想看看:

1810032000
# and
4

我正在为旧式程序创建输出,我必须使用cat编写一个文本文件。 到目前为止工作正常,但我根本无法在那里使用e+10符号。

4 个答案:

答案 0 :(得分:191)

这有点灰色。您需要记住R将始终调用print方法,并且这些打印方法会听取一些选项。包括' scipen' - 科学展示的惩罚。来自help(options)

  

'scipen':整数。决定打印时应用的惩罚             固定或指数表示法中的数值。正             价值观倾向于固定和消极的科学             符号:除非更多,否则将优先使用固定符号             比'scipen'数字更宽。

示例:

R> ran2 <- c(1.810032e+09, 4) 
R> options("scipen"=-100, "digits"=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> options("scipen"=100, "digits"=4)
R> ran2
[1] 1810032000          4

那就是说,我仍觉得它很吵。最可怕的方法是使用sprintf()显式宽度。

答案 1 :(得分:128)

可以通过在R中禁用科学记数法来实现。

options(scipen = 999)

答案 2 :(得分:49)

我最喜欢的答案:

format(1810032000, scientific = FALSE)
# [1] "1810032000"

这可以提供你想要的东西,而不必在R设置中捣乱。

请注意,它返回的是字符串而不是数字对象

答案 3 :(得分:3)

options(scipen = 999) 放入.Rprofile file,以便默认情况下自动执行。 (不要依赖手动操作。)

(这与其他答案有所不同:如何?

  1. 当你在多个项目之间,每天或每月多种语言之间徘徊时,这可以保持理智。记住输入每个项目的设置容易出错且无法扩展。您可以拥有全局〜/ .Rprofile或每个项目.Rprofile。或两者兼而有之,后者压倒前者。
  2. 将所有配置保存在项目范围或全局.Rprofile自动执行它。这对于例如默认包加载,data.table配置,环境等。再次,该配置可以运行到一个设置页面,你没有机会记住这些及其语法并在其中输入