阔别几年后我又回到了 R。我想使用在主脚本中按预期工作的断点,但当断点位于外部函数中时则不行。
我创建了这段简单的代码只是为了形象化这个问题。
在 main.R 我有这些行:
source("adding_numbers.R")
total_number <- adding_numbers(1, 2)
total_number2 <- adding_numbers(3, 4)
total_number3 <- adding_numbers(5, 6)
print(c(total_number,total_number2, total_number3))
adding_numbers 函数位于文件adding_numbers.R 中并包含:
adding_numbers <- function (number1, number2)
{
added_number <- number1 + number2
z <- added_number + number1
return(added_number)
}
在这篇文章中他们确实提到了获取所有文件或使用debug()。
当我单击按钮源时,它确实以调试模式发送控制台,并且当断点位于 main.R 中时工作正常,但是当断点位于adding_numbers.R 中时,它不会在断点处停止。 使用 debug(adding_numbers) 确实可以使代码自动进入函数,但同样不会在特定断点处停止。
我在这里缺少什么?
非常感谢。
我认为从
source()
调用 main.R
是问题所在。 这将用函数的新副本替换具有断点设置的 adding_numbers
的定义,并且 RStudio 在调用之前没有机会重新设置断点。
所以你应该先调用
source("adding_numbers.R")
,然后设置断点,然后执行你的主要代码。
或者,您可以使用基本函数
setBreakpoint("adding_numbers.R#3")
在该文件的第 3 行设置断点。 这需要在您获取文件之后、调用该函数之前发生。