R: округлить от 0 - PullRequest
       7

R: округлить от 0

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

Как округлить, начиная с .6 (не с .5)?

Например, round(53.51245, 4) вернет мне 53.5125, но я хочу 53.5124.

Какможно указать номер разделения (а именно увеличить значения, начиная с 0,6)?

1 Ответ

1 голос
/ 20 сентября 2019

Я не уверен, является ли это дубликатом поста, на который есть ссылка в комментариях (но пост, безусловно, может быть актуальным).Из того, что я понимаю, OP хотел бы «округлить» значения в большую или меньшую сторону, если они равны >= 0.6 или < 0.6 соответственно.(Связанный пост относится к количеству цифр, до которых должно быть округлено число, что является другой проблемой.)

В ответ на вопрос об OP, здесь есть вариант, где мы определяем пользовательскую функцию my.round

my.round <- function(x, digits = 4, val = 0.6) {
    z <- x * 10^digits
    z <- ifelse(signif(z - trunc(z), 1) >= val, trunc(z + 1), trunc(z))
    z / 10^digits
}

Затем

x <- 53.51245
my.round(x, 4)
#[1] 53.5124

x <- 53.51246
my.round(x, 4)
#[1] 53.5125 

my.round векторизовано, поэтому мы могли бы сделать

my.round(c(53.51245, 53.51246, 53.51246789), digits = 4)
#[1] 53.5124 53.5125 53.5125
...