R Program - Count digits in an Integer
In R, count of digits in a given integer can be found out by using below mentioned methods.
Method 1: Using iteration
The method involves the following steps:
Input: MyNum Step 1: Initialize the count = 0 Step 2: Iterate over MyNum while it is not zero. Step 2a: Update MyNum by MuNum %/% 10 Step 2b: Increase count by 1 Step 3: Return count
Example:
Input: 564 count: 0 Iteration 1: MyNum: 564 %/% 10 = 56 count: 0 + 1 = 1 Iteration 2: MyNum: 56 %/% 10 = 5 count: 1 + 1 = 2 Iteration 3: MyNum: 5 %/% 10 = 0 count: 2 + 1 = 3 return count = 3
The below block of code shows the implementation of above concept:
#function to count number of digits countDigits <- function(MyNum) { count <- 0 #absolute value of input is taken #to handle negative integers MyNum =as.integer(abs(MyNum)) while (MyNum != 0) { MyNum <- MyNum %/% 10 count <- count + 1 } return (count) } x <- 123 y <- 459709 sprintf("%d contains: %d digits", x, countDigits(x)) sprintf("%d contains: %d digits", y, countDigits(y))
The above code will give the following output:
[1] "123 contains: 3 digits" [1] "459709 contains: 6 digits"
Method 2: Using Recursion
The above result can also be achieved using recursive function:
#function to count number of digits countDigits <- function(MyNum) { #absolute value of input is taken #to handle negative integers MyNum = as.integer(abs(MyNum)) if(MyNum != 0) { return (1 + countDigits(MyNum%/%10)) } else { return (0) } } x <- 564 y <- 980620 sprintf("%d contains: %d digits", x, countDigits(x)) sprintf("%d contains: %d digits", y, countDigits(y))
The above code will give the following output:
[1] "564 contains: 3 digits" [1] "980620 contains: 6 digits"
Method 3: Using log function
The log (base-10) of absolute value of a given number can be used to find out the number of digits in a given number. Consider the example below:
#function to count number of digits countDigits <- function(MyNum) { retval = as.integer(log10(abs(MyNum))) + 1 return (retval) } x <- 564 y <- -12345 z <- 980620 sprintf("%d contains: %d digits", x, countDigits(x)) sprintf("%d contains: %d digits", y, countDigits(y)) sprintf("%d contains: %d digits", z, countDigits(z))
The above code will give the following output:
[1] "564 contains: 3 digits" [1] "-12345 contains: 5 digits" [1] "980620 contains: 6 digits"
Method 4: Using length of string
This can also be achieved by converting the absolute value of number into a string and then finding out the length of the string to get the number of digits in the original number. Consider the example below:
#function to count number of digits countDigits <- function(MyNum) { MyStr = as.character(as.integer(abs(MyNum))) return (nchar(MyStr)) } x <- 564 y <- -12345 z <- 980620 sprintf("%d contains: %d digits", x, countDigits(x)) sprintf("%d contains: %d digits", y, countDigits(y)) sprintf("%d contains: %d digits", z, countDigits(z))
The above code will give the following output:
[1] "564 contains: 3 digits" [1] "-12345 contains: 5 digits" [1] "980620 contains: 6 digits"