我想逐步完成一个R脚本.我在搜索如何执行此操作时看到了"debug"命令,但这似乎只适用于函数.此脚本没有任何功能.
"浏览器"命令看起来很有前景,所以我把"browser()"作为我脚本的第一行,但是当我运行它时似乎没有做任何事情.
如何让脚本在第一行暂停,以便我可以单步执行?
Dan*_*her 21
在RStudio的IDE版本0.98.1102中,我正在绞尽脑汁试图解决这个问题(单步执行没有特定功能的脚本).
RStudio中新脚本的解决方案:
ctrl+shift+n)break point由
break point(红点)或的代码行号的左侧browser()到要设置的代码行break pointSource on Save框(Source窗口上方),然后保存文件,Source按钮Source,debugSource("<yourfilename>")+ enter在Console,或ctrl+shift+s有关在RStudio中进行调试的更多步骤,请参阅此帮助文件 (日期为2015年4月23日12:59).
我偏爱RStudio,所以我推荐以下内容:
RStudio的一个很好的功能是RStudio服务器可以在无头服务器上运行良好.然后,您可以通过本地计算机上的Web浏览器中的http连接到服务器.在EC2实例上运行R时,我使用此配置.RStudio保持状态,所以如果我在火车上失去了互联网接入,当我收到信号时,RStudio就会在我离开的地方准确接听并且我的远程机器不知道我断开连接并重新连接.请注意,目前仅在FC/CentOS和Debian/Ubuntu上支持RStudio服务器.虽然它可以在*nix的其他变体下编译.
对于仅考虑完整表达式而不是单独行的R解决方案,请尝试以下方法:
sourcep <- function(file){
coms <- parse(file)
for (i in seq_along(coms)){
print(coms[[i]])
eval(coms[[i]],envir=.GlobalEnv)
mess <- paste("Expression",i,"of",length(coms),"parsed. Press <return> to continue.")
cat(mess)
readLines(n=1)
}
}
Run Code Online (Sandbox Code Playgroud)
你打电话给这个叫source(虽然这是更基本的,不包括任何选项).基本上,它用于parse从源文件创建已解析但未评估的表达式列表,然后遍历此列表以打印表达式,在全局环境中对其进行评估,然后发出消息以指示进程.最后一行是创建暂停的行:从中读取单行的调用stdin().
您在注释中提到使用Rscript运行代码,但要进行调试,则需要以交互方式运行它。换句话说,要browser开始工作,请启动常规的R控制台和source您的脚本。由于脚本的第一行是browser(),因此您将立即返回到提示,在该提示下可以使用“ n”单步执行代码。但是,由于它是成熟的R提示符,因此您也可以仅通过键入其名称或为其分配值来检查或更改任何变量值。(或者实际上,调用任意R函数。)