Here is another way to do it without converting back and forth to character
strings:
digits <- function(x) {
if(length(x) > 1 ) {
lapply(x, digits)
} else {
n <- nchar(x)
rev( x %/% 10^seq(0, length.out=n) %% 10 )
}
}
> digits(10010)
[1] 1 0 0 1 0
> digits( c(123, 4567, 273) )
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5 6 7
[[3]]
[1] 2 7 3
This version only works on integers, so modification would be needed if you
want to pass floating point numbers (but you would first need to decide what
you would want the output to be).
--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
[email protected]
801.408.8111
> -----Original Message-----
> From: [email protected] [mailto:r-help-bounces@r-
> project.org] On Behalf Of drflxms
> Sent: Friday, March 04, 2011 6:52 AM
> To: [email protected]
> Cc: [email protected]
> Subject: Re: [R] sum of digits or how to slice a number into its digits
>
> Hi Dimitris,
>
> thank you very much for your quick an efficient help! Your solution is
> perfect for me. Does exactly what I was looking for if combined with
> unlist and as.numeric before using sum.
>
> Now I can keep on with my real problem ;)...
> Thanx Again!!!
>
> Best, Felix
>
> Am 04.03.2011 14:25, schrieb Dimitris Rizopoulos:
> > one way is using function strsplit(), e.g.,
> >
> > x <- c("100100110", "1001001", "1101", "00101")
> > sapply(strsplit(x, ""), function (x) sum(x == 1))
> >
> >
> > I hope it helps.
> >
> > Best,
> > Dimitris
> >
> >
> > On 3/4/2011 2:18 PM, drflxms wrote:
> >> Dear R colleagues,
> >>
> >> I face a seemingly simple problem I couldn't find a solution for
> myself
> >> so far:
> >>
> >> I have to sum the digits of numbers. Example: 1010 ->2 100100110 ->
> 4
> >> Unfortunately there seems not to be a function for this task. So my
> idea
> >> was to use sum(x) for it. But I did not figure out how to slice a
> number
> >> to a vector of its digits. Example (continued from above): 1010 ->
> >> c(1,0,1,0) 100100110 -> (1,0,0,1,0,0,1,1,0).
> >>
> >> Does anyone know either a function for calculating the sum of the
> digits
> >> of a bumber, or how to slice a number into a vector of its digits as
> >> described above?
> >>
> >> I'd appreciate any kind of help very much!
> >> Thanx in advance and greetings from cloudy Munich,
> >> Felix
> >>
> >> ______________________________________________
> >> [email protected] 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.
> >>
> >
>
> ______________________________________________
> [email protected] 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.
______________________________________________
[email protected] 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.