为什么我的R代码实现费米钢琴调音师问题仅返回1个输出
问题原因
- R语言中使用
{}包裹的代码块,运行后仅会返回最后一行表达式的执行结果。你把所有代码都套在一个外层大括号中,自然只能拿到最后一个计算值的输出。 - 代码中间的临时计算表达式如果没有赋值、也没有显式调用
print(),在批量运行脚本时默认不会打印结果,只有最后一个全局环境下的表达式结果会自动输出。 - 另外你代码倒数第二行的计算调用的仍是第一组参数(
Population/PPH等不带后缀2的变量),如果你的预期是分别输出两组参数的计算结果,这行属于冗余的重复计算。
修正代码
去掉外层大括号,直接编写两组计算逻辑即可输出两个结果:
# 第一组参数计算 Population <- 2695598 PPH <- 2 HWTP <- 0.04 TPYPP <- 2 TPTPD <- 6 WPY <- 261 (Population/PPH)*HWTP*TPYPP/(TPTPD*WPY) # 第二组参数计算 Population2 <- 2679080 PPH2 <- 2.48 HWTP2 <- 0.04 TPYPP2 <- 2 TPTPD2 <- 6 WPY2 <- 261 (Population2/PPH2)*HWTP2*TPYPP2/(TPTPD2*WPY2)
如果需要保留计算结果后续调用,可以给两个输出赋值并显式打印:
# 第一组参数计算 Population <- 2695598 PPH <- 2 HWTP <- 0.04 TPYPP <- 2 TPTPD <- 6 WPY <- 261 result1 <- (Population/PPH)*HWTP*TPYPP/(TPTPD*WPY) print(result1) # 第二组参数计算 Population2 <- 2679080 PPH2 <- 2.48 HWTP2 <- 0.04 TPYPP2 <- 2 TPTPD2 <- 6 WPY2 <- 261 result2 <- (Population2/PPH2)*HWTP2*TPYPP2/(TPTPD2*WPY2) print(result2)
内容的提问来源于stack exchange,提问作者DarthBob
相关产品推荐
相关产品推荐

