我有一个玩具R脚本(测试。R( 如下:
myString <- "Hello World"
browser()
print(myString)
我想以交互方式调试脚本,因此调用" browser()
"。
但是,当我像这样运行脚本时:
Rscript test.R
我只看到:
Called from: top level
[1] "Hello World"
即"浏览器(("调用似乎被跳过了。当我像这样运行脚本时:
R -f test.R
明白了:
>
> myString <- "Hello World"
> browser()
Called from: top level
Browse[1]> print (myString)
[1] "Hello World"
Browse[1]>
>
但是,执行不会停止在"浏览[1]>"以允许我进行调试。
我在这里错过了什么?在python中,我可以插入"import pdb; pdb.set_trace()
"进行调试。我正在 R 中寻找类似的东西。
请参阅此处了解如何使用 browser()
。您将能够在终端上的 R 交互环境中source('scriptname.R')
脚本(通过运行 R
而不是 Rscript scriptname.R
(,然后browser()
的行为将与 import pdb; pdb.set_trace()
非常相似。一个主要的警告是参数 - 您可以手动配置它以使用您在命令行上提供的参数,例如if(interactive())
(或者可能有其他方法可以实现这一点(。