R Studio中sprintf()单独运行正常 放入for循环无输出如何解决?
问题产生原因
R的执行逻辑存在如下规则:交互模式(即命令行直接输入代码运行的模式)下,没有执行赋值操作的语句会自动将返回结果打印到控制台;但在脚本运行、循环体内部执行时,表达式的返回值不会自动打印,只有显式调用打印类函数才会输出内容。你单独在命令行运行sprintf()时触发了交互模式的自动打印规则,放到for循环中后没有显式打印指令,因此没有输出内容。
解决方法
可选择以下任意一种方案处理:
- 方案1:用
print()函数包裹sprintf()语句,强制打印返回的字符串:
loop_index_vec for (current_nr_of_years in loop_index_vec) { print(sprintf("Your maximum allowed investment for a period of %g years in the first year equals %g", current_nr_of_years, max_invest_year_zero_vec[current_nr_of_years])) # browser() }
- 方案2:直接使用
cat()函数完成内容拼接+打印,无需嵌套sprintf(),注意末尾添加\n换行符避免所有输出挤在同一行:
loop_index_vec for (current_nr_of_years in loop_index_vec) { cat("Your maximum allowed investment for a period of %g years in the first year equals %g\n", current_nr_of_years, max_invest_year_zero_vec[current_nr_of_years]) # browser() }
内容的提问来源于stack exchange,提问作者babipsylon
相关产品推荐
相关产品推荐

