Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中某列的位数之和_R - Fatal编程技术网

R中某列的位数之和

R中某列的位数之和,r,R,我在R中实现了一个函数,它给出R中所有数字的和,直到和为一个数字 这是我写的 ds <- function(x) { c <- sum(floor(x / 10^(0:(nchar(x) - 1))) %% 10) if(c>9) {c<-ds(c)} return(c) } 但是当我使用这个代码时 records<-records%>%mutate(V7=ds(am1)) 对于所有行,v7的值设置为5 但是,如果我将此函数

我在R中实现了一个函数,它给出R中所有数字的和,直到和为一个数字

这是我写的

ds <- function(x) {
    c <- sum(floor(x / 10^(0:(nchar(x) - 1))) %% 10)
    if(c>9)
    {c<-ds(c)}
    return(c)
}
但是当我使用这个代码时

records<-records%>%mutate(V7=ds(am1))
对于所有行,v7的值设置为5

但是,如果我将此函数应用为

ds(624727)
我得到了正确的输出

请帮助我将其应用于列

请尝试:

records %>% 
  rowwise() %>%
  mutate(V7=ds(am1))
mutate()
中使用时,您的函数将同时接收所有值的向量。函数需要能够获取向量并返回向量。您的函数不能很好地处理多个值
ds(c(624727,1112222))
。实现这一点的最简单方法是使用
Vectorize()
。也许吧

records %>% mutate(V7=Vectorize(ds)(am1))
或者可以使用dplyr中的rowwise选项

records %>% rowwise() %>% mutate(V7=ds(am1))
records %>% mutate(V7=Vectorize(ds)(am1))
records %>% rowwise() %>% mutate(V7=ds(am1))