为什么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.
相关产品推荐
相关产品推荐

