如何用循环在R语言中向集合输入数字并解决求和代码问题
解决你的R代码求和问题
嘿,我来帮你排查下这段代码的问题,让它能正确计算9个数字的总和!
你的代码里的核心问题
- 循环变量和向量重名了:你把循环变量命名为
homescore,这和一开始定义的空向量是同一个名字。每次循环时,homescore会被覆盖成1到9的整数,之前通过append添加的输入值都会丢失,这是导致结果不对的关键原因。 - 类型转换时机可以优化:
readline读取的输入默认是字符串类型,你每次append后再转成数值型虽然能生效,但更高效的方式是读取时直接转换。 - 缺少求和并打印的步骤:你的代码最后没有计算总和并输出的逻辑,所以就算向量正确了也看不到结果。
修正后的代码
下面是调整后的代码,我会标注每一步的作用:
# 先初始化一个空的数值型向量,用来存储输入的分数 homescore <- numeric() # 用i作为循环变量,避免和存储分数的向量重名 for (i in 1:9) { # 读取输入并直接转换为数值型,避免后续类型问题 score <- as.numeric(readline(prompt = "Enter Score: ")) # 将读取到的分数添加到向量中 homescore <- append(homescore, score) } # 计算总和并打印出来 total_sum <- sum(homescore) cat("9个数字的总和是:", total_sum, "\n")
更简洁的写法(可选)
在R里,我们可以不用for循环,用replicate函数更简洁地实现同样的功能:
# 一次性读取9个输入,自动转换为数值型向量 homescore <- replicate(9, as.numeric(readline(prompt = "Enter Score: "))) # 计算并打印总和 cat("9个数字的总和是:", sum(homescore), "\n")
内容的提问来源于stack exchange,提问作者Christopher
相关产品推荐
相关产品推荐

