r - R中的加权数字总和

标签 r string

我正在尝试找出最有效的方法来计算数字字符串的加权数字总和(其中权重等于数字字符串中数字的位置)。

示例:对于数字 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/

相关文章:

r - 在 for 循环内的同一行上打印多个变量的值

jupyter 中的 r 图形 - 无法启动 png() 设备

java - java中固定大小内存分配的字符串数组

java - 尝试使用 String.split ("\\?"时出现意外行为)

c - 编写一个仅执行三个有效命令的 C 程序

r - 如何为数据框的每一行创建列联表

R:将一个(大)数据框的坐标匹配到另一个(大)数据框的网格单元中

R并行: rbind parallely into separate data.帧

java - 使用 String hashCode() 方法?

swift - stringVar.data.toString().replace ("", "") 相当于 swift