Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当出现语法错误且未显式调用函数时,R在函数中执行代码_R - Fatal编程技术网

当出现语法错误且未显式调用函数时,R在函数中执行代码

当出现语法错误且未显式调用函数时,R在函数中执行代码,r,R,这很有趣。我在CentOS 6.9,R-3.4.2。我有一个代码,tmp.R: main<-function(){ a = 9 print(a) xyz print("Should never get here") } 这很让人困惑,因为我从未真正调用过main()。事实上,如果我删除语法错误 (第三行变成print(a)),我运行它,没有任何输出。这是我心目中的预期行为 问题:为什么在出现语法错误时,R会在脚本中执行代码,即使代码没有显式调用(!) 编辑:结果表

这很有趣。我在CentOS 6.9,R-3.4.2。我有一个代码,
tmp.R

main<-function(){
    a = 9
    print(a) xyz
    print("Should never get here")
}
这很让人困惑,因为我从未真正调用过
main()
。事实上,如果我删除语法错误 (第三行变成
print(a)
),我运行它,没有任何输出。这是我心目中的预期行为

问题:为什么在出现语法错误时,R会在脚本中执行代码,即使代码没有显式调用(!)


编辑:结果表明,这种行为似乎是由于在我的
配置文件
中设置了
选项(错误=回溯)
。这仍然是不受欢迎的行为。在交互模式下仍然希望能够得到回溯,而不是在非交互模式下执行这种奇怪的代码

它不是在执行代码,而是在解析代码,以便将其作为对象存储在调用环境中。在这种情况下,解析失败,而不是执行。(在
Rscript
或R控制台本身中应该是这种情况。类似地,尝试
a您确定这是调用Rscript时得到的输出(而不仅仅是
source()
-ing文件)?我没有得到相同的行为(运行R3.4.4)。@r2evans但行
[1]“不应该出现在这里”
只应在求值过程中打印,而不应在解析过程中打印。该“[1]”部分是实际正在求值的一个重要指标,不是吗?@MrFlick:这确实是运行
Rscript
@r2evans:有没有办法抑制这种恼人的输出?相关:因此,问题似乎在于
选项(错误=回溯)
.Rprofile
中。当我注释掉它时,脚本结束时没有执行最后一条打印语句(如预期的那样)
Error: unexpected symbol in:
"    a = 9
    print(a) xyz"
No traceback available
[1] "Should never get here"
Error: unexpected '}' in "}"
No traceback available