Метод Пола Херли, описанный выше, хорошо работал для меня как для положительных, так и для отрицательных чисел.Ниже приведен некоторый код, который модифицирует решение Пола в функцию, в которой можно указать желаемые значимые цифры.
sigfig <- function(vec, n=3){
### function to round values to N significant digits
# input: vec vector of numeric
# n integer is the required sigfig
# output: outvec vector of numeric rounded to N sigfig
formatC(signif(vec,digits=n), digits=n,format="fg", flag="#")
} # end of function sigfig
, чтобы проверить, работает ли он ОК
numbers <- c(50000.01, 1000.001, 10.00001, 12345, 1234.5, 123.45, 1.2345, 0.12345, 0.0000123456, -50000.01, -1000.001,-10.00001, -12345, -1234.5, -123.45, -1.2345, -0.12345, -0.0000123456)
sigfig(numbers) # defaults to 3
sigfig(numbers, 3)
sigfig(numbers, 1)
sigfig(numbers, 6)