r - 将字符串转换为一位数字并求和

标签 r text recursion sum character

我已经尝试了几个小时才能找到解决方案,但我失败了。

我有一个包含3个不同字符('I','R' & 'O')的字符串,长度从1到6。
例如

IRRROO
RRORRR
IIR
RIRRO

每个字符代表一个数字I=1,R=2,O=3我需要将此字符串转换为一个数字,与位置相乘并求和。例如
IRRROO ---> (1*1)+(2*2)+(2*3)+(2*4)+(3*5)+(3*6) =52
IIR    ---> (1*1)+(1*2)+(2*3) =9

在此先感谢您的帮助。

最佳答案

因子具有数值等价物。您可以很好地利用此示例:

# original
x1 <- "IRRROO"

         # 1    2    3
levs <- c("I", "R", "O")

# split the string and convert to factors, then to numeric
x1f <- as.numeric(factor(strsplit(x1, "")[[1]], levels=levs))

# tally it up 
sum(x1f * seq_along(x1f))

或作为一个不错的单行函数:
sumValue <- function(x, levs=c("I", "R", "O")) 
    sum(seq.int(nchar(x)) *  as.numeric(factor(strsplit(x, "")[[1]], levels=levs)))

sumValue("IRRROO")
# [1] 52
sumValue("IIR")
# [1] 9

关于r - 将字符串转换为一位数字并求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15893737/

相关文章:

windows - 帮助编写批处理脚本来解析 CSV 文件并输出文本文件

c++从文件中读取以构建基于指针的迷宫

c++ - 在 C++ 中解释类型为 'int' 的递归函数的返回值

java - Java 枚举中的递归?

r - 从列中的文件名列表中提取组件以在 R 中创建新列

r - 带有内部标签 r 的优化 VennDiagram

r - 使用 tidyr 按向量给出的特定顺序选择列

r - 更改火山图上的平滑度

r - 通过字符串解析合并数据框行

r - 记住 Rcpp 函数?