2016-09-23 3 views
0

Как вырезать десятичные числа частного в R? Я вычисляю миллионы значений и записываю их в файл на лету. Чтобы сэкономить некоторое пространство, я не хочу больше пяти десятичных знаков и также опускаю конечные нули.Максимальное число десятичных знаков в R

Я попытался

options(digits=5) 

который я прочитал только предложение на R и не работает хорошо бросить курить. И

format(x, nsmall = 5) 

определяет только минимальное число десятичных знаков. И

sprintf("%.5f", x) 

даст мне ровно пять десятичных знаков.

ответ

2

Как насчет только с

round(x,5) 
x=1.23456777 
round(x,5) 
#[1] 1.23457 
x=1.230000 
#round(x,5) 
[1] 1.23 

Если вы не хотите попробовать это закругление:

as.integer(x*10^5)/10^5 

x=1.234567777 
as.integer(x*10^5)/10^5 
#[1] 1.23456 
x=1.230000 
as.integer(x*10^5)/10^5 
#[1] 1.23 
+1

Спасибо за предложение, но я хотел бы иметь точность ровно пять знаков после запятой при необходимости. Круглый метод будет вести себя немного иначе, а выход для первого x не будет 1.23457, но 1.2346 – Wipster

+1

@Wipster Вы ищете 'signif'? – Roland

+0

нормально, обновлено согласно вашему требованию. Я думаю, вы хотите 1.23456 для 1.234567777 правильно? –

1

Круглая функция работает просто отлично, если вы воздерживались от изменения цифр вариант заранее.

Запуск с параметрами по умолчанию:

> round(x = 1.23456777, digits = 5) 
[1] 1.23457 

Run с измененными опциями:

> options(digits=5) 
> round(x = 1.23456777, digits = 5) 
[1] 1.2346 
+0

P.S .: Значение по умолчанию цифр равно 7 ('getOption (« цифры »)) –

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