我正在编写一个自定义的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
参数,但这看起来有些不专业。
我如何强制它给我一个固定长度的字符串,无论数字是否使用科学计数法?
sprintf("%0.6g", 1234.56789e100)
超出了11位:"1.23457e+103"
- Julián Urbanosprintf(“%0.5g”,1234.56789e100)
: - IRTFM