2015-03-14 2 views
1

Пусть у меня есть числовой вектор, который я хотел бы округлить «симпатичным» числа, такие как:Округление малых чисел с плавающей точкой в ​​R

vec <- c(1.739362e-08,8.782537e-08,0.5339712) 

Я хотел бы, чтобы это было:

pretty.vec <- c(1.74e-08,8.78e-08,0.53) 

Как это достичь? используя round не помогает, так как он завершает первые два элемента 0:

> round(vec,2) 
[1] 0.00 0.00 0.53 

Благодарности

ответ

4

Как насчет ?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 

Это довольно трудно получить R форматировать элементы вектора по-разному друг от друга: как правило, это предполагает, что вы хотите, что последовательность.

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

Также связаны: ?format, ?options (см "scipen")

Смежные вопросы