I have a vector of numbers (eg. c(1, 11, 1232, 4221, 2)
), and I need a corresponding vector of the sums of digit of each element (c(1, 2, 8, 9, 2)
, in the previous example).
I found some nice solutions for single numbers. the nicest (from Digit sum function in R) is:
digitsum <- function(x) sum(floor(x / 10^(0:(nchar(x) - 1))) %% 10)
However, this solution is not vectorized. It would only work on one element at a time.
And so, Is there a way to vectorize this solution, and create a similar function that would work on vectors? (instead of looping through all elements, that is)
> x=c(1, 11, 1232, 4221, 2)
> sapply(strsplit(as.character(x),""),function(y){sum(as.numeric(y))})
[1] 1 2 8 9 2