如果不缩短到1e + 05,我怎么能粘贴100000?

Dou*_*nes 26 r r-faq

问题:如何在paste100000成为的情况下使用1e+05

提前抱歉,如果这个问题看起来很无聊(但它导致了我的代码中的错误).我使用R来调用外部脚本,所以当我说例如paste("abc",100000)我希望它输出"abc 100000"而不是"abc 1e+05".

以下是我的屏幕上的示例:

> paste("abc",100000)
[1] "abc 1e+05"
> paste("abc",100001)
[1] "abc 100001"
Run Code Online (Sandbox Code Playgroud)

这导致我的脚本对输入"100001"而不是"100000"的奇怪行为.

我意识到我可以创建一个脚本来将数字转换为字符串然而我喜欢,但我觉得如果有一种内部方法可以做同样的事情我不应该这样做(我怀疑有一些"方法"我缺少) .

[如果有帮助,我使用的是Ubuntu 12.04.1 LTS("精确"),在终端中运行R版本2.14.1(2011-12-22).

Dir*_*tel 28

?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> 
Run Code Online (Sandbox Code Playgroud)

或者,通过sprintf()以下方式控制格式化老式方式:

R> sprintf("%s %6d", "abc", 100000)
[1] "abc 100000"
R> 
Run Code Online (Sandbox Code Playgroud)


Ian*_*ows 13

或者,您可以使用不以科学计数法打印的整数.您可以通过在其后面加上"L"或执行as.integer来指定您的数字是整数.

> paste("abc",100000L)
[1] "abc 100000"
> paste("abc",as.integer(1000000000))
[1] "abc 1000000000"
Run Code Online (Sandbox Code Playgroud)


Stu*_*art 9

或者format可能更简单,sprintf尤其是当您想要更改小数位的显示方式时:

> paste("abc",format(100000, scientific = FALSE))
[1] "abc 100000"
> paste("abc",format(0.1234567, scientific = FALSE, digits = 4))
[1] "abc 0.1235"
Run Code Online (Sandbox Code Playgroud)