我正在编写一个自定义的print.xx函数,以显示一堆非常有表格的数据。列的宽度为11个字符,因此我执行如下操作:
> format(1234.567,width=11,digits=7)
[1] " 1234.567"
> format(1234.56789,width=11,digits=7)
[1] " 1234.568"到目前一切尚好。当我有一个很大/很小的数字,而科学的表示法出现时,问题就来了:
> format(1234.56789e10,width=11,digits=7)
[1] "1.234568e+13"
> format(1234.56789e-10,width=11,digits=7)
[1] "1.234568e-07"它应该使用科学的符号,好的,但我需要它坚持11个字符的宽度。我已经查找了scientific和scipen参数,但它仍然超出了11个字符的限制。一个选项可以是检查是否生成了科学表示法,如果是的话,可以减少digits参数,但在我看来很俗气。
我怎么能强迫它给我一个固定长度的字符串,不管这个数字是否用科学符号表示?
发布于 2014-11-29 02:37:30
在我的例子中,我用:
sprintf("%11.5e",123456789e10) 1 "1.23457e+18“
您只需要知道您需要多少个字符,并在width.decimal之间做正确的平衡,即%11.5e
发布于 2013-08-06 01:49:27
> sprintf("%0.6g", 1234.56789e-10)
[1] "1.23457e-07"
> sprintf("%0.6g", 1234.56789e10)
[1] "1.23457e+13"https://stackoverflow.com/questions/18070455
复制相似问题