我怎么能贴10万而不会被缩短到1E + 05? [重复](How can I paste 100

2019-07-04 04:24发布

这个问题已经在这里有一个答案:

  • 如何禁用科学记数法? 1个回答

:我如何使用paste而不100000变得1e+05

提前很抱歉,如果这个问题显得轻佻(但它导致了我的代码中的bug)。 我用R调用外部脚本,所以当我说,例如paste("abc",100000)我希望它输出"abc 100000" ,而不是"abc 1e+05"

下面是它看起来像我的屏幕上的实例:

> paste("abc",100000)
[1] "abc 1e+05"
> paste("abc",100001)
[1] "abc 100001"

这导致我的脚本适用于输入“100001”,而不是“100000”的怪异行为。

我知道我可以创建一个脚本,以数字转换为字符串,但是我很喜欢,但我觉得我不应该这样做,如果有做同样的事情,一个内部的方式(我怀疑有一些“方法”我失去了) 。

[如果有帮助,我在Ubuntu 12.04.1 LTS( “精确的”),在终端运行v版本2.14.1(2011-12-22)。]

Answer 1:

?options ,特别scipen

R> paste("abc", 100000)
[1] "abc 1e+05"
R> options("scipen"=10)    # set high penalty for scientific display
R> paste("abc", 100000)
[1] "abc 100000"
R> 

另外,通过控制格式化紧紧老派方式sprintf()

R> sprintf("%s %6d", "abc", 100000)
[1] "abc 100000"
R> 


Answer 2:

或者,你可以使用没有得到印在科学记数法的整数。 你可以指定你的电话号码是把一个“L”背后,或做as.integer整数。

> paste("abc",100000L)
[1] "abc 100000"
> paste("abc",as.integer(1000000000))
[1] "abc 1000000000"


Answer 3:

或者format可能会比简单sprintf尤其是当你想改变小数的显示方式:

> paste("abc",format(100000, scientific = FALSE))
[1] "abc 100000"
> paste("abc",format(0.1234567, scientific = FALSE, digits = 4))
[1] "abc 0.1235"


文章来源: How can I paste 100000 without it being shortened to 1e+05? [duplicate]
标签: r r-faq