R中某列的位数之和
我在R中实现了一个函数,它给出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 但是,如果我将此函数
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))