[R] A small thing that amused my small mind
    Bert Gunter 
    bgunter@4567 @end|ng |rom gm@||@com
       
    Thu Sep  6 04:28:31 CEST 2018
    
    
  
A few days ago, someone asked how to truncate arbitrary numerics to 1
digit towards 0. e.g. -189 should become -100 and 254 should become
200; and all values in magniude < 1 should become 0.
I proposed a somewhat clumsy solution using floor() and ceiling(), but
in fooling with it a bit more, I realized that a better way to do it
is to use R's trunc() function. It is simpler and works for all cases
AFAICS. Here's a litte function to do it -- maybe someone else might
find it amusing/instructive:
poof <- function(x){
   ## truncating to 0
## x is a numeric vector
k <- 10^trunc(log10(abs(x)))
ifelse(k, trunc(x/k)*k, k)
}
## test it
> x <- c(0,-.036578, .4876, -189, 254)
> poof(x)
[1]    0    0    0 -100  200
Cheers,
Bert
    
    
More information about the R-help
mailing list