强迫R不使用指数符号(例如e+10)?

我可以强制R使用常规数字而不是使用类似__abc0的符号吗?我有:

1.810032e+09
# and
4

在相同的向量中,并希望看到:

1810032000
# and
4

我正在为一个老式程序创建输出,我必须使用cat写一个文本文件。 到目前为止,这一切都很好,但我只是不能在那里使用e+10符号

364695 次浏览

这是一个灰色地带。您需要回想一下,R总是会调用一个打印方法,而这些打印方法侦听一些选项。包括“scipen”——对科学展示的惩罚。从help(options):

< p >“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(),例如sprintf("%.5f", ran2)

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

options(scipen = 999)

我最喜欢的答案是:

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

这就提供了你想要的,而不必在R设置中瞎折腾。

注意,它返回一个字符串而不是一个数字对象

放入options(scipen = 999) 。Rprofile文件,默认情况下自动执行。(不要依赖于手动操作。)

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

  1. 当你每天或每月在多个项目、多种语言之间思考时,这可以让事情保持理智。记住输入每个项目的设置很容易出错,而且不可扩展。你可以有一个全局~/。Rprofile或每个项目的。Rprofile。或者两者都有,后者凌驾于前者之上。
  2. 将所有配置保存在项目范围或全局的. rprofile中,自动执行它。这是有用的,例如默认包加载,数据。表配置,环境等。同样,该配置可以运行到设置页面,并且您不可能记住这些配置及其语法并输入它们