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