Кто-то, должно быть, сделал это, но я не вижу ответа. Я хочу округлить вектор чисел до ближайшего десятого места. Я знаю, что могу использовать функцию floor, если она десятичная, но это не работает для целых чисел

# this works, for decimals
floor( 9576.44 )
# I would like this to return 9570
round( 9576 , -1 )
r
2
MatthewR 21 Апр 2020 в 21:46

2 ответа

Лучший ответ

Это создаст функцию, которая делит ваше число на 10 и дает вам целую часть числа. Затем умножьте число на 10, чтобы получить число, на которое вы вменили слово в десятке.

newfloor <- function(X){ 
    (X %/% 10 ) *10}

newfloor(9576)
1
greg5678 21 Апр 2020 в 19:06

Таким образом, вы всегда хотите вырезать последние несколько цифр, чтобы округлить? Как насчет этой функции

clip <- function(x, d=1) x - x %% 10**d

Он просто выполняет математический модуль, чтобы найти последнюю цифру числа и вычесть ее.

Тогда вы можете сделать

clip( 9576 , 1 )
# [1] 9570
clip( 9576 , 2 )
# [1] 9500

Или все еще используя пол, вы можете просто разделить и умножить на 10

floor(9576 /10) *10
# [1] 9570
2
MrFlick 21 Апр 2020 в 18:52