如何在使用`Rscript`时从命令行使用R的`browser()`函数

10

我如何通过命令行运行包含browser()的脚本,并以使其停止执行的方式运行它?

Rscript file.R 

对我没用。看起来我只能从R的解释器中使用browser()。我做错什么了?


通常在这种情况下,人们会简单地放弃原来的问题,并开一个新的问题来反映你实际的问题,因为这基本上是一个完全不同的问题,而不是对你原来问题的澄清。 - joran
无论如何,我想把这个称为重复,但那里的答案似乎并不令人满意,也许你会吸引到更好的答案。 - joran
很酷 - 我不常使用SO,所以感谢你的编辑。 - quine
2
“browser” 仅在交互模式下工作。 - Roman Luštrik
1个回答

9

R函数,如browser()debugger()recover(),只在交互模式下起作用。

如果您的脚本不接受命令行参数,一个简单的解决方法是启动R并执行source("myscript.R")


R 函数中,我已经在注释所在的位置添加了 browser(),但执行并没有停止,而且我只得到了这个调用跟踪 Called from: plusplus(1)。我使用不正确吗?您能否在您的答案中编辑该函数并展示如何使用 browser() - quine
当你看到 Called from: plusplus(1) 时,执行会停止并进入调试器。请注意,对于字节编译的 R 函数,您可能无法跳转到下一步(它将跳转到函数的结尾)。您是否在 R 中查看了帮助文档(输入 '?browser')? - lgautier
还可以查看trace函数,它可用于将browserrecover或其他内容插入到您想要调试的函数中。 - Greg Snow
2
好的 - 我现在明白了,在使用 R 解释器时,browser() 可以正常工作。我一直在尝试从命令行运行此脚本,使用 Rscript file_name.R 但它无法停止执行。我将编辑问题。 - quine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接