使用R对数字求和的函数

使用R对数字求和的函数,r,R,我正在RStudio中工作,并试图开发一个函数,将任意整数值的数字相加 我只能成功地开发一位数和两位数的函数,但当我开始添加例如12345时,该函数不起作用 有人能告诉我我错过了什么吗 我的示例代码如下: myfunction2 <- function(input) { if(input < 10) { return(input) } else { return(sum((input%%10) + floor(input/10))) } myfuncti

我正在RStudio中工作,并试图开发一个函数,将任意整数值的数字相加

我只能成功地开发一位数和两位数的函数,但当我开始添加例如12345时,该函数不起作用

有人能告诉我我错过了什么吗

我的示例代码如下:

myfunction2 <- function(input) {
  if(input < 10) {
    return(input)
  } else {
      return(sum((input%%10) + floor(input/10)))
}
myfunction2
library(stringr)

myfunction2一个无循环选项是使用splitstackshape包中的cSplit将数字分割成一个每个字符一个元素的向量,然后将向量中的所有元素相加。这适用于1(
single_num
)或
many
数字

library(splitstackshape)
single_num <- 17692
many <- c(12345, 678910, 222, 10, 7099998)

sums <- function(vec) {
   print(rowSums(cSplit(as.data.frame(vec),1, sep = '', stripWhite = FALSE), na.rm = T))
}

sums(single_num)
==> 25
sums(many)
==> 15 31 6 1 51
库(splitstackshape)

你需要一个循环(或递归方法)。除非
floor(input/10))
是一个位数,否则这种方法将不起作用。另外,
floor(input/10))
可以写成
input%/%10
这个问题有现成的答案,但我不知道你是否想看看,或者这个问题是否应该以重复的形式结束,因为你正试图从第一原则中解决一些问题。但是如果你想要的话:。
library(splitstackshape)
single_num <- 17692
many <- c(12345, 678910, 222, 10, 7099998)

sums <- function(vec) {
   print(rowSums(cSplit(as.data.frame(vec),1, sep = '', stripWhite = FALSE), na.rm = T))
}

sums(single_num)
==> 25
sums(many)
==> 15 31 6 1 51