我能否强制 R 使用普通数字而不是类似于 e+10
的记数法?我的代码如下:
1.810032e+09
# and
4
在同一个向量中并且想要查看:
1810032000
# and
4
我正在为一款老式程序创建输出,并且必须使用cat
来编写文本文件。目前为止这很好用,但是我无法在那里使用 e+10
表示法。
我能否强制 R 使用普通数字而不是类似于 e+10
的记数法?我的代码如下:
1.810032e+09
# and
4
在同一个向量中并且想要查看:
1810032000
# and
4
我正在为一款老式程序创建输出,并且必须使用cat
来编写文本文件。目前为止这很好用,但是我无法在那里使用 e+10
表示法。
这是一个有些模糊的领域。你需要记住,R始终会调用打印方法,并且这些打印方法会监听一些选项,包括“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()
和显式宽度,例如sprintf("%.5f", ran2)
。
options("scipen"=0, "digits"=7)
(这些是默认值)。意思是设置R语言的参数选项,将科学计数法关闭,保留小数点后七位。 - Scarabeeoptions("scipen"=100, "digits"=4)
的代码移到顶部,而没有实现结果的代码则放在下面,并附上适当的注释。这样做可以避免让那些寻求快速解决方案的人感到困惑(因为谷歌搜索结果会显示第一个)。 - xbsd可以通过在R中禁用科学计数法来实现。
options(scipen = 999)
withr::local_options(list(scipen = 999))
。 - Patrick我最喜欢的答案:
format(1810032000, scientific = FALSE)
# [1] "1810032000"
这样做可以得到你想要的结果,而不必在R设置中瞎搞。
请注意,它返回的是字符字符串,而不是数字对象。
justified =“none”
,否则将填充空格使它们具有相同的长度。 - Lauren Fitchformat(1e6, scientific=FALSE)
返回 "1000000"
,而 as.character(1e6)
返回 "1e+06"
,因此这两种方法之间存在差异。 - mickey将 options(scipen = 999)
放入你的.Rprofile文件中,以便默认情况下自动执行。(不要依赖手动执行。)
(这与其他答案所说的不同之处在于什么?)