舍入小浮点数

use*_*545 2 r rounding

假设我有一个数字向量,我想要舍入到"更漂亮"的数字,例如:

vec <- c(1.739362e-08,8.782537e-08,0.5339712)
Run Code Online (Sandbox Code Playgroud)

我希望它是:

pretty.vec <- c(1.74e-08,8.78e-08,0.53)
Run Code Online (Sandbox Code Playgroud)

我如何实现这一目标?使用round并没有真正帮助,因为它将前两个元素舍入为0:

> round(vec,2)
[1] 0.00 0.00 0.53
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 5

怎么样?signif?(根据您的应用程序,您也可以使用print(...,digits=3))

vec <- c(1.739362e-08,8.782537e-08,0.5339712)
signif(vec,digits=3)
## [1] 1.74e-08 8.78e-08 5.34e-01
print(vec,digits=3)
## [1] 1.74e-08 8.78e-08 5.34e-01
Run Code Online (Sandbox Code Playgroud)

让R以不同方式格式化向量的元素是相当困难的:通常它假设你想要那种一致性.

print(sprintf("%1.3g",vec),quote=FALSE)
## [1] 1.74e-08 8.78e-08 0.534   
Run Code Online (Sandbox Code Playgroud)

还有关:?format,?options(见"scipen")