Как я могу сказать R правильно округлить?

Как я могу сказать R правильно округлить?

Десятичные разряды в R Я столкнулся с проблемой, которую не могу понять, как решить Я хочу, чтобы R вычислил 5/26*100 = 19,230769

x <- 5/26*100
x

дает мне:

[1] 19.23077

Давайте попробуем использовать round(), сначала установив цифры равными 4:

x <- round(5/26*100,digits=4)
x

дает:

[1] 19.2308

Далее, давайте установим цифры на 5:

x <- round(5/26*100,digits=5)
x

дает:

[1] 19.23077

Теперь давайте установим цифры на 6:

x <- round(5/26*100,digits=6)
x

дает:

[1] 19.23077

Кто-нибудь может сказать мне, как это исправить? Вы получаете те же результаты или ваша rstudio правильно округляет?

Я также устал от signif()

x <- signif(5/26*100,digits=6)
x

дает нам:

[1] 19.2308

увеличивается до 7 цифр:

> x <- signif(5/26*100,digits=7)
> x
[1] 19.23077

Увеличение до 8 цифр:

> x <- signif(5/26*100,digits=8)
> x
[1] 19.23077

И мы можем использовать sprintf()

 > x <- sprintf("%0.6f", (5/26*100))
  > x
   [1] "19.230769"

sprintf() решает проблему с округлением, но создает новую проблему, заменяя числовое значение символом.

Может ли кто-нибудь показать мне, как заставить r дать мне 5/26 * 100 = 19,230769 с числовым выводом?

Спасибо,

Нарисовалась


person Community    schedule 20.01.2018    source источник


Ответы (2)


Проблема в том, что по умолчанию R выводит только 7 цифр. См. страницу справки ?getOption и найдите «цифры».

Вы можете изменить это, изменив настройку, чтобы разрешить использование большего количества цифр.

options(digits=13)
round(5/26*100,digits=6)
[1] 19.230769
round(5/26*100,digits=7)
[1] 19.2307692
round(5/26*100,digits=8)
[1] 19.23076923
person G5W    schedule 20.01.2018
comment
Уважаемый G5W, большое спасибо за этот ответ. Это решило мою проблему. - person ; 21.01.2018

Функция round выполняет вычисления и возвращает значащие цифры на основе параметра digits, назначенного функции round. Но параметр digits в параметре global управляет тем, что вы видите в выводе командной строки.

Вы можете изменить значение digits, используя options, или вы можете попытаться преобразовать его в as.character, чтобы увидеть желаемый результат.

Моя текущая настройка digits в options 5 все еще ниже расчетных результатов.

Example:
> as.character(round(5/26*100, 6))
[1] "19.230769"
> as.character(round(5/26*100, 7))
[1] "19.2307692"
person MKR    schedule 20.01.2018