在 Mathematica 中,存在一个命令Chop,它用精确的整数 0 替换接近于零的近似实数。
我想我可以构建自己的函数,比如
chop <- function(x, tol = 1e-16) {
ifelse(abs(x) >= tol, x, 0)
}
Run Code Online (Sandbox Code Playgroud)
但是 R 中已经有任何内置函数了吗?
编辑:我只想将值舍入接近 0。例如:
x <- 1e-4
chop(x, tol = 1e-3)
#0
chop(1+x, tol = 1e-3)
#1.0001
Run Code Online (Sandbox Code Playgroud)
zapsmall()确实让你很接近,但这需要一个具有相当大数字的向量来进行比较。
zapsmall(3.5e-5, digits = 4)
#3.5e05
zapsmall(c(3.5e-5, 3.6e10), digits = 4)
#0.0e+00 3.6e+10
Run Code Online (Sandbox Code Playgroud)
要正确显示它,您可以使用 format() 将其包裹起来
format(zapsmall(as.numeric(c(3.5e-5, 3.6e10)), digits = 3), scientific = FALSE, trim = TRUE)
# "0" "36000000000"
Run Code Online (Sandbox Code Playgroud)