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

强制R不使用指数表示法(例如e+;10)?,r,number-formatting,options,scientific-notation,defaults,R,Number Formatting,Options,Scientific Notation,Defaults,我能强迫R使用正则数而不是像e+10那样的符号吗?我有: 1.810032e+09 # and 4 在同一向量中,并希望看到: 1810032000 # and 4 我正在为一个老式程序创建输出,我必须使用cat编写一个文本文件。 到目前为止,这很好,但我不能在那里使用e+10符号。这是一个有点灰色的区域。您需要回忆一下,R将始终调用一个print方法,这些print方法将侦听一些选项。包括“scipen”——对科学展示的惩罚。从帮助(选项): “scipen”:整数。决定打印时将应用的惩

我能强迫R使用正则数而不是像
e+10
那样的符号吗?我有:

1.810032e+09
# and 
4
在同一向量中,并希望看到:

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

这是一个有点灰色的区域。您需要回忆一下,R将始终调用一个print方法,这些print方法将侦听一些选项。包括“scipen”——对科学展示的惩罚。从
帮助(选项)

“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
R>ran2选项(“scipen”=-100,“数字”=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> 选项(“scipen”=100,“数字”=4)
R> ran2
[1] 1810032000          4

尽管如此,我还是觉得它很老套。最直接的方法是使用显式宽度的
sprintf()。您需要回忆一下,R将始终调用一个print方法,这些print方法将侦听一些选项。包括“scipen”——对科学展示的惩罚。从
帮助(选项)

“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
R>ran2选项(“scipen”=-100,“数字”=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> 选项(“scipen”=100,“数字”=4)
R> ran2
[1] 1810032000          4

尽管如此,我还是觉得它很老套。最直接的方法是使用显式宽度的
sprintf()

options(scipen = 999)

可以通过禁用R中的科学符号来实现

options(scipen = 999)
我最喜欢的答案是:

format(1810032000, scientific = FALSE)
# [1] "1810032000"
这将提供您想要的,而不必在R设置中乱搞

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

我最喜欢的答案:

format(1810032000, scientific = FALSE)
# [1] "1810032000"
这将提供您想要的,而不必在R设置中乱搞

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

Put
options(scipen=999)
,因此默认情况下会自动执行。(不要依靠手动操作。)

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

  • 这样,当您每天或每月在多个项目、多个语言之间切换时,情况会保持正常。记住输入每个项目的设置容易出错且不可扩展。您可以使用全局~/.Rprofile或每个项目.Rprofile。或两者,后者将覆盖前者
  • 将所有配置保存在项目范围内或全局范围内。Rprofile会自动执行它。这对于默认包加载、data.table配置、环境等非常有用。同样,该配置可以运行到设置页面,您不可能记住这些设置及其语法并键入它们
  • 选项(scipen=999)
    放在您的中,以便在默认情况下自动执行它(不要依赖于手动执行)

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

  • 这样,当您每天或每月在多个项目、多个语言之间切换时,情况会保持正常。记住输入每个项目的设置容易出错且不可扩展。您可以使用全局~/.Rprofile或每个项目.Rprofile。或两者,后者将覆盖前者
  • 将所有配置保存在项目范围内或全局范围内。Rprofile会自动执行它。这对于默认包加载、data.table配置、环境等非常有用。同样,该配置可以运行到设置页面,您不可能记住这些设置及其语法并键入它们

  • 谢谢。scipen似乎是我一直在寻找的选择。令人毛骨悚然的惩罚解释让我回避了。但你的例子很好地解释了它。sprintf,嗯?你是指我一周前在sprintf遇到的麻烦吗?:)在rstudio中,如果你导入一个数据集并进行训练样本10k=格式(训练样本10k,科学=假)重新加载后,它将更改科学符号。完成此操作后,我如何恢复正常?@CSA:
    options(“scipen”=0,“digits”=7)
    (这些是默认值)您应该移动获得结果的一个
    options(“scipen”=100,“digits”=4)
    在代码的顶部,不在下面的部分…加上适当的注释。对于正在寻找快速解决方案的人来说,这可能会让人困惑(谷歌会显示第一个结果).谢谢。scipen似乎是我一直在寻找的选项。令人毛骨悚然的惩罚解释让我回避了。但你的例子很好地解释了它。sprintf,嗯?你是指我一周前在sprintf遇到的麻烦吗?:)在rstudio中,如果你导入一个数据集并进行训练样本10k=格式(训练样本10k,科学=假)并重新加载,它将改变科学的符号。完成此操作后,我如何使事情恢复正常?@CSA:
    options(“scipen”=0,“digits”=7)
    (这些是默认值)您应该将获得结果的选项(“scipen”=100,“digits”=4)
    移到代码顶部,而不在其下方的选项。。。用适当的注释。对于正在寻找快速解决方案的人来说,这可能会让人感到困惑(谷歌显示了第一个结果)