如何用循环实现字符串中单个数字的指定加权计算?
用循环实现拼接数字字符串的加权求和计算
给定拼接整数的字符串:
A = "883745"
你原本通过逐个提取字符转数值的方式获取每个数字,再计算特定加权求和。下面是用循环实现该逻辑的两种方法:
方法一:循环中逐个提取字符计算
先初始化求和变量,再通过for循环遍历每个字符位置,提取对应数字并计算加权值累加:
A <- "883745" sum_result <- 0 len_A <- nchar(A) for (i in 1:len_A) { # 提取第i位数字并转数值 num <- as.numeric(substr(A, i, i)) # 计算当前位的权重:总长度 - 位置索引 + 1 weight <- len_A - i + 1 # 累加到总和 sum_result <- sum_result + num * weight } # 输出结果 sum_result
方法二:先拆分字符串再循环计算
先把字符串拆分为单个字符的向量,再循环遍历该向量计算加权和,代码更简洁:
A <- "883745" nums <- as.numeric(strsplit(A, "")[[1]]) len_A <- length(nums) sum_result <- 0 for (i in 1:len_A) { weight <- len_A - i + 1 sum_result <- sum_result + nums[i] * weight } # 输出结果 sum_result
两种方法最终都会得到相同的加权求和结果,相比手动逐个提取的方式,循环可以适配任意长度的数字字符串,无需修改代码结构。
内容的提问来源于stack exchange,提问作者user19413178
相关产品推荐
相关产品推荐

