RStudio运行for循环计算脚本每次输出完整向量问题求助
问题原因
两处代码逻辑错误导致异常输出:
- for循环内
cat()打印时错误传入了完整的Grams向量,而非每次迭代对应的单个重量值weight,这是每次输出都打印全量向量的直接原因。 - 自定义
Diam函数存在运算符优先级错误:R中幂运算符^优先级高于除法/,原有写法(...)^1/3会先计算括号结果的1次方,再除以3,不符合你预期的开三次方逻辑,需要将1/3用括号包裹改为^(1/3)。
修正后完整代码
# 定义重量向量 Grams <- c(0.96, 1.51, 2.17, 3.85, 4.45,6.02) # 修正运算优先级的直径计算函数 Diam <- function(weight){ (2/2.54*(weight/0.92*4/3*3.14159)^(1/3)) } # 测试单个重量值的计算结果 Diam(1.51) # 修正后的遍历循环 for (weight in Grams){ IceCube <- Diam(weight) cat(weight,'\n', "对应的球体直径为", IceCube, "\n" ) }
修正后输出结果
0.96 对应的球体直径为 1.397287 1.51 对应的球体直径为 1.631836 2.17 对应的球体直径为 1.84306 3.85 对应的球体直径为 2.19912 4.45 对应的球体直径为 2.308063 6.02 对应的球体直径为 2.547032
内容的提问来源于stack exchange,提问作者Jason Borne
相关产品推荐
相关产品推荐

