我知道我总是可以在nonce R脚本中粘贴一个单独的表达式,然后使用Rstudio将断点附加到脚本中的表达式并获取脚本。
我正在寻找一种方法来逐步调试调试器中的表达式,不需要为此目的创建新脚本。
答案 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>