如何在不为其创建脚本的情况下逐步调试调试器中的表达式?

时间:2016-07-08 14:49:06

标签: rstudio

我知道我总是可以在nonce R脚本中粘贴一个单独的表达式,然后使用Rstudio将断点附加到脚本中的表达式并获取脚本。

我正在寻找一种方法来逐步调试调试器中的表达式,不需要为此目的创建新脚本。

3 个答案:

答案 0 :(得分:1)

您可以通过将表达式包装在函数中,然后在函数上设置调试标志并运行它来完成此操作。

foo <- function() {
   # Your expr
}
debug(foo)
foo()

您还可以使用debug在表达式调用的任何函数上设置调试标志,以便在那里开始调试。更多:

https://stat.ethz.ch/R-manual/R-devel/library/base/html/debug.html

另一种方法是在表达式中包含对browser()的调用。评估该调用时,调试器将激活。

https://stat.ethz.ch/R-manual/R-devel/library/base/html/browser.html

答案 1 :(得分:0)

当您点击断点时,您可以在控制台窗口中评估表达式。一些简单的表达式看起来像浏览器的命令(例如n),因此您可能需要输入print(n)

据我所知,这对表达式的单个评估很有用,但您无法在“值”窗格中显示它。 R有一种方法可以创建与实时表达式相对应的变量(参见?makeActiveBinding),但是RStudio调试器只显示它们<Active binding>,它没有显示值。

编辑问题之后:据我所知,你不能在R中做到这一点。但是在RStudio中创建脚本非常容易,所以我只是这样做:File | New file | R Script,或任何键盘快捷键在您的平台上运行。

答案 2 :(得分:0)

我找到了一个非常简单的解决方案。只需评估以下复合表达式:

browser(); <ARBITRARY R EXPRESSION>

(公平地说,Jonathan确实在他的回答中提到了这个解决方案,但是当我读到它时我并不明白他的意思。我最终&#34;重新发现&#34;我自己也采用相同的解决方案。)< / p>