У меня есть номер, например, 1.128347132904321674821, который я хотел бы показывать как только два десятичных знака при выводе на экран (или при записи в файл). Как это сделать?
x <- 1.128347132904321674821
РЕДАКТИРОВАТЬ:
Использование:
options(digits=2)
Был предложен в качестве возможного ответа. Есть ли способ указать это в скрипте для одноразового использования? Когда я добавляю его в свой сценарий, он, кажется, не делает ничего другого, и меня не интересует повторный набор для форматирования каждого числа (я автоматизирую очень большой отчет).
-
Ответ: круглый (х, цифры = 2)
r
formatting
rounding
r-faq
Брэндон Бертельсен
источник
источник
controls the number of digits to print when printing numeric values. It is a suggestion only. Valid values are 1...22 with default 7. See the note in print.default about values greater than 15.
из параметров? это влияет только на вывод.round(23, digits=2)
будет печатать,23
а не23.00
. Если вы хотите последнее, попробуйте stackoverflow.com/a/12135122/180892Ответы:
Справочная информация : Некоторые ответы , предложенные на этой странице (например,
signif
,options(digits=...)
) не гарантирует , что определенное количество знаков после запятой отображаются для произвольного числа. Я предполагаю, что это конструктивная особенность в R, при которой надлежащая научная практика включает в себя показ определенного числа цифр, основанных на принципах « значащих цифр ». Однако во многих доменах (например, стиль APA , бизнес-отчеты) требования к форматированию требуют отображения определенного количества десятичных разрядов. Это часто делается для согласованности и целей стандартизации, а не для значимых цифр.Решение :
Следующий код показывает ровно два десятичных знака для числа
x
.Например:
Более общая функция выглядит следующим образом: где
x
число иk
число отображаемых десятичных знаков.trimws
удаляет все начальные пробелы, которые могут быть полезны, если у вас есть вектор чисел.Например,
источник
0.0001
как0.00
format()
иprettyNum()
преобразовать в числовые символы. Как бы вы решили это?format(c(10, 1), nsmall=1)
выходов"10.0" " 1.0"
(обратите внимание на начальный пробел перед 1.0. При этомsprintf()
функция, кажется, гарантирует более приятное форматирование на обе стороны десятичного знака, например ,sprintf(c(10,1), fmt = '%#.1f')
избавляется от этого противного ведущего пространства и возвращается"10.0" "1.0"
.format
используется в столбце.Вы можете отформатировать число, скажем
x
, до десятичных разрядов, как вы хотите. Вотx
число со многими десятичными разрядами. Предположим, что мы хотим показать до 8 десятичных знаков этого числа:Здесь
format="f"
приводятся плавающие числа в обычных десятичных разрядах, скажем, xxx.xxx, иdigits
указывается количество цифр. Напротив, если вы хотите получить целое число для отображения, вы бы использовалиformat="d"
(очень похожеsprintf
).источник
formatC
это почти исключительно то, что я использую для этой цели. Я думаю, что этот ответ хорош и находится в базе R согласно запросу ОП.Вы можете попробовать мой пакет форматируемый .
Хорошо, что это
x
все еще числовой вектор, и вы можете делать больше вычислений с тем же форматированием.Более того, цифры не теряются, вы можете переформатировать с большим количеством цифр в любое время :)
источник
на 2 знака после запятой, при условии, что вы хотите сохранить конечные нули
который дает
Как упоминается ниже @mpag, кажется, что иногда R может давать неожиданные значения с этим, а метод округления, например, sprintf (5.5550, fmt = '% #. 2f') дает 5.55, а не 5.56.
источник
Что-то такое :
Опция определения цифр:
источник
digits
опция, кажется, не устанавливает количество цифр после десятичной дроби. Например, когда я устанавливаю параметры (цифры = 2), то при печати 7,25 получается результат 7,2, 1234,25 становится 1234, а 0,25 остается 0,25. Есть ли другой вариант взаимодействия с этим?Проверьте функции prettyNum, формат
использовать пробные нули (например, 123.1240)
sprintf(x, fmt='%#.4g')
источник
sprintf
fmt
аргумент, извини!g
в вашем ответе для фиксированных цифр, использованиеf
работает лучше.Если вы предпочитаете значащие цифры фиксированным, тогда может быть полезна команда signif :
источник
Error: could not find function "fixed"
signif
работает для указанного числа, но я предполагаю, что общая прикладная проблема заключается в том, когда вам нужно показать ровно два десятичных знака, но вы не знаете, какое число опережает время. В этом случаеsignif
будет дано различное количество десятичных знаков в зависимости от фактического числа.Функция
formatC()
может быть использована для форматирования числа в два десятичных знака. Эта функция задает два знака после запятой, даже если результирующие значения включают конечные нули.источник
Я использую этот вариант для принудительной печати K десятичных знаков:
источник
Обратите внимание, что числовые объекты в R хранятся с двойной точностью , что дает вам (примерно) 16 десятичных знаков точности - остальное будет шумом. Я допускаю, что приведенное выше число, вероятно, только для примера, но оно состоит из 22 цифр.
источник
Похоже, мне бы хотелось что-то вроде
За небольшую онлайн помощь .
источник
format.default(x, digits = 2)
просто выстрел в темноте, хотя на основе предоставленной ссылки. Эта информация - то, чего не хватает из того, что я обычно читаю для документации, я ожидал увидеть и печатные материалы.если вы просто хотите округлить число или список, просто используйте
Затем данные будут округлены до 2 десятичных знаков.
источник