问题:如何在paste不100000成为的情况下使用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)
或者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)
| 归档时间: |
|
| 查看次数: |
8196 次 |
| 最近记录: |