计算数据帧特定列中的数字总和

dsn威士忌

我正在尝试对数据帧的最后2列中的整数进行求和。我找到了一个求和的函数,但是我认为应用该函数可能会遇到问题-不确定吗?

Dataframe
a = c("a", "b", "c")
b = c(1, 11, 2)
c = c(2, 4, 23)
data <- data.frame(a,b,c)

#Digitsum function
digitsum <- function(x) sum(floor(x / 10^(0:(nchar(as.character(x)) - 1))) %% 10)

#Applying function
data[2:3] <- lapply(data[2:3], digitsum)

这是我得到的错误:

*Warning messages:
1: In 0:(nchar(as.character(x)) - 1) :
  numerical expression has 3 elements: only the first used
2: In 0:(nchar(as.character(x)) - 1) :
  numerical expression has 3 elements: only the first used*
李哲源

目前,您的函数digitsum可以用于单个标量输入,例如,

digitsum(32)
# [1] 5

但是,它不能接受向量输入,否则":"会抱怨。您需要使用Vectorize以下命令对这个函数进行矢量化处理

vec_digitsum <- Vectorize(digitsum)

然后它适用于矢量输入:

b = c(1, 11, 2)
vec_digitsum(b)
# [1] 1 2 2

现在您可以轻松使用lapply

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章