我正在尝试找出最有效的方法来计算数字字符串的加权数字总和(其中权重等于数字字符串中数字的位置)。
示例:对于数字 1059,数字的加权和计算为 1 * 1 + 0 * 2 + 5 * 3 + 9 * 4 = 52
我想允许输入是任意长度的,但是如果在字符串长度有限制时有更有效的方法(例如,知道数字不超过 10 位允许更有效的程序) 我也对此持开放态度。此外,如果首选输入是 numeric
类型而不是 character
类型,那也是可以接受的。
我现在拥有的是一个老式的 for 循环:
wsod <- function(str) {
output <- 0
for (pos in 1:nchar(str)) {
digit <- as.numeric(substr(str, pos , pos))
output <- output + pos * digit
}
output
}
A few solutions已经针对 Python 提出了建议(使用数字输入),但我不认为它们直接适用于 R。
最佳答案
> number <- 1059
> x <- strsplit(as.character(number), "")[[1]]
> y <- seq_len(nchar(number))
> as.numeric(as.numeric(x) %*% y)
[1] 52
关于r - R中的加权数字总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50180221/