将值四舍五入为特定有效数字的最简单方法是什么?
类似于函数 signif() 的东西,但只执行向上舍入(而不是向下舍入)
例如:将 0.001145288 向上舍入到 1 个有效数字将产生 0.002
任何建议将不胜感激:)
干杯!
将值四舍五入为特定有效数字的最简单方法是什么?
类似于函数 signif() 的东西,但只执行向上舍入(而不是向下舍入)
例如:将 0.001145288 向上舍入到 1 个有效数字将产生 0.002
任何建议将不胜感激:)
干杯!
此函数在一个有效数字的情况下提供所需的输出:
upround1 <- function(x) {
if (isTRUE(all.equal(x,0))) return (x)
decs <- 10^floor(log10(abs(x)))
ceiling(x/decs)*decs
}
例子:
upround1(0.001145288)
#[1] 0.002
upround1(0.0008145258)
#[1] 9e-04
upround1(11)
#[1] 20
upround1(-11)
#[1] -10
upround1(-0.023)
#[1] -0.02
我创建了一个将格式更改为科学格式的函数,将字符串按“e”拆分并使用该信息来限制数字。
my_ceiling <- function(x){
num_string <- format(x, scientific=TRUE)
n <- strsplit(num_string, "e")
n1 <- sapply(n, function(x) as.numeric(x[1]))
n2 <- sapply(n, function(x) as.numeric(x[2]))
ceiling(n1) * 10^(n2)
}
my_ceiling(0.001145288)
# [1] 0.002
my_ceiling(0.0974343)
# [1] 0.1
my_ceiling(0)
# [1] 0
set.seed(1)
x <- runif(10, 0.001, 0.01)
my_ceiling(x)
# [1] 0.004 0.005 0.007 0.010 0.003 0.010 0.010 0.007
# [9] 0.007 0.002