Я запускаю код для вывода выходов, где я хочу, чтобы все выходы печатались с 1 десятичной точкой. Однако код использует функции, которые я использую в целом, и я не хочу указывать в них, что печатный результат округлен.
Ответы на этот вопрос Форматирование десятичных знаков в R предлагают использовать options(digits=2)
или round(x, digits=2)
.
Первый вариант - это общий параметр, который отлично подходит для округления 1.234
до 1.2
, но печатает 12.345
как 12
Второй вариант будет работать, если поместить внутри функции, но я не хочу прикасаться к ним. Как установить это в целом?
Ответ 1
Вы можете сделать это:
print <- function(x, ...) {
if (is.numeric(x)) base::print(round(x, digits=2), ...)
else base::print(x, ...)
}
Ответ 2
Мне нравится formatC
для печати чисел с заданным количеством знаков после запятой. Таким образом, 1
всегда следует печатать как "1.0"
, когда digits = 1
и format = "f"
. Вы можете создать метод печати S3 для объектов класса, таких как:
print.numeric<-function(x, digits = 1) formatC(x, digits = digits, format = "f")
print(1)
# [1] "1.0"
print(12.4)
# [1] "12.4"
print(c(1,4,6.987))
# [1] "1.0" "4.0" "7.0"
print(c(1,4,6.987), digits = 3)
# [1] "1.000" "4.000" "6.987"