On Nov 13, 2010, at 12:34 PM, T.D. Rudolph wrote:
Is there any really easy way to truncate integers with several
consecutive
digits without rounding and without converting from numeric to
character
(using strsplit, etc.)?? Something along these lines:
e.g. = 456
truncfun(e.g., location=1)
= 4
truncfun(e.g., location=1:2)
= 45
truncfun(e.g., location=2:3)
= 56
truncfun(e.g., location=3)
= 6
It's one thing using floor(x/100) to get 4 or floor(x/10) to get 45,
but I'd
like to return only 5 or only 6, for example, in cases where I don't
know
what the numbers are going to be.
I'm sure there is something very logical that I am missing, but my
code is
getting too complicated and I can't seem to find a parsimonious
solution.
Modulo arithmetic? (not the same location arguments as you specified
but should give you ideas to work with:
trncint <- function(x, left=0,length=0) (x %% 10^(left) ) %/%
10^(left-length)
> trncint(456, 2,2)
[1] 56
> trncint(456, 3,2)
[1] 45
> trncint(456, 3,1)
[1] 4
> trncint(456, 2,1)
[1] 5
> trncint(456, 3,1)
[1] 4
> trncint(456, 1,1)
[1] 6
--
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.