#r #rounding #stat
#r #округление #статистика
Вопрос:
Я просто пытаюсь округлить число R, например:
> round(1.327076e-09)
Я хотел бы, чтобы это привело к
> 1.33e-09
но приводит к
> 0
какую функцию можно использовать?
Комментарии:
1. Почему оно должно возвращать,
1.32e-09
не должно быть1.33e-09
? Или вы хотите просто усечь число после второго dp?
Ответ №1:
Ответ №2:
Использовать signif
:
x <- 1.327076e-09
signif(x,3)
[1] 1.33e-09
или sprintf
:
sprintf("%.2e",x)
[1] "1.33e-09"
Комментарии:
1. Хороший звонок с
sprintf
. В общем, вы хотите потерять точность только при отображении чисел, а не при фактических вычислениях.round
иsignif
следует использовать экономно.
Ответ №3:
Функция round
произведет округление, и вы можете указать количество десятичных знаков:
x <- 1.327076e-09
round(x, 11)
[1] 1.33e-09
Принимая вызов, поставленный @Joris и @GavinSimpson — чтобы использовать trunc
для решения этой задачи, выполните следующее:
library(plyr)
round_any(x, 1e-11, floor)
[1] 1.32e-09
Комментарии:
1. Вы можете добавить trunc(), чтобы делать то, что делает OP (не то, что он просит).
2. Динь-дон! Это функция, которая пришла на ум, когда я увидел желаемый результат, но я подумал, что округление в вопросах OP заменяет указанный результат.
3. @Joris но как заставить
trunc()
работать здесь:> trunc(1.327076e-09) [1] 0
?