zapsmall {base} | R Documentation |
Rounding of Numbers: Zapping Small Ones to Zero
Description
zapsmall
determines a digits
argument dr
for
calling round(x, digits = dr)
such that values close to
zero (compared with the maximal absolute value in the vector) are
‘zapped’, i.e., replaced by 0
.
Usage
zapsmall(x, digits = getOption("digits"),
mFUN = function(x, ina) max(abs(x[!ina])),
min.d = 0L)
Arguments
x |
a numeric or complex vector or any R number-like object
which has a |
digits |
integer indicating the precision to be used. |
mFUN |
a |
min.d |
an integer specifying the minimal number of digits to use in
the resulting |
References
Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.
Examples
x2 <- pi * 100^(-2:2)/10
print( x2, digits = 4)
zapsmall( x2) # automatical digits
zapsmall( x2, digits = 4)
zapsmall(c(x2, Inf)) # round()s to integer ..
zapsmall(c(x2, Inf), min.d=-Inf) # everything is small wrt Inf
(z <- exp(1i*0:4*pi/2))
zapsmall(z)
zapShow <- function(x, ...) rbind(orig = x, zapped = zapsmall(x, ...))
zapShow(x2)
## using a *robust* mFUN
mF_rob <- function(x, ina) boxplot.stats(x, do.conf=FALSE)$stats[5]
## with robust mFUN(), 'Inf' is no longer distorting the picture:
zapShow(c(x2, Inf), mFUN = mF_rob)
zapShow(c(x2, Inf), mFUN = mF_rob, min.d = -5) # the same
zapShow(c(x2, 999), mFUN = mF_rob) # same *rounding* as w/ Inf
zapShow(c(x2, 999), mFUN = mF_rob, min.d = 3) # the same
zapShow(c(x2, 999), mFUN = mF_rob, min.d = 8) # small diff