После ответа @Michael Lugo, но, сделав его способным обрабатывать отрицательные числа (например, ответ @Stefan Zechner), а также добавив округления вверх и вниз, я сделал следующее.
round_to_zeros = function(x, num.sig.figs = 1, round.down = TRUE){
initial.x <- as.numeric(x)
if(x == 0){return(0)}
if(x < 0){x <- (-1*x)}
power_of_ten = floor(log(x, 10))
number_down <- round(floor(x/10^power_of_ten), num.sig.figs-1)*10^power_of_ten
number_up <- round( x /10^power_of_ten, num.sig.figs-1)*10^power_of_ten
if(initial.x < 0){
if(round.down==TRUE){return(-1*number_up)} else {return(-1*number_down)} }
if(round.down==TRUE){return(number_down)} else {return(number_up)}
}
Это округление вверх и вниз и имеет дело как с отрицательными, так и с положительными числами.