You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么sprintf在for循环中不生效?这是R语言的Bug吗?

该情况不属于R语言的Bug

这是R默认的打印规则导致的正常现象:

  • R仅会自动打印顶层环境下独立表达式的返回值,也就是不在循环、函数、条件分支等嵌套代码块内的表达式。你示例中第一行的sprintf属于顶层表达式,因此执行后直接输出了结果。
  • 写在for循环内部的表达式返回值默认不会被自动打印,必须显式调用print()函数才会输出内容。

修正后的代码(可输出预期结果)

i=1
print(sprintf("Hello world %s.\n\n",i))

for(i in 2:3) {
  print(sprintf("Hello world %s.\n\n",i))
}

补充说明:如果是通过Rscript命令直接运行完整的.R脚本,即使是顶层的表达式也不会触发自动打印,所有需要输出的内容都需要显式调用print()、cat()等输出类函数。


内容的提问来源于stack exchange,提问作者Matt N.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:09:00