R. Округление до определенного количества цифр.Независимо от десятичных знаков - PullRequest
2 голосов
/ 26 сентября 2019

Можно ли округлить число до нужного числа в зависимости от того, насколько велико число?

Я получаю это:

x <- c(0.012345, 0.12345, 1.1245, 12.345, 123.45)
round(x, digits = 3)
#[1]   0.012   0.123   1.125  12.345 123.450

signif(x, digits = 3)
#[1]   0.0123   0.1230   1.1200  12.3000 123.0000

Я хочу это:

#[1]   0.01   0.12   1.12  12.3 123

Ответы [ 2 ]

2 голосов
/ 26 сентября 2019

Я думаю, что signif нужно войти внутрь round, иначе 12.345 становится 12.4.

x <- c(0.012345, 0.12345, 1.1245, 12.345, 123.45, 1234.5, 12345, 123450)
x2 <- round(signif(x,3),2)
as.character(x2)
#[1] "0.01"   "0.12"   "1.12"   "12.3"   "123"    "1230"   "12300"  "123000"
0 голосов
/ 26 сентября 2019

Быстрый способ приблизить вас к желаемому выводу, но не к 100%.

as.numeric(strtrim(x, 4))

Или к желаемому выводу в виде строки:

xl <- strsplit(strtrim(x, 4), "[.]")

unlist(
lapply(xl, function(x) {
paste(x, collapse = ".")
})
)
...