调试R中不同源文件中的函数

Baz*_*man 5 r rstudio

我正在使用RStudio,我希望能够在特定的行停止代码执行.

这些函数在第一个脚本文件中定义,并从第二个脚本文件调用.

我使用第一个文件到第二个文件 source("C:/R/script1.R")

我使用从头到尾的运行:我从第二个脚本开始运行,该脚本具有函数调用,并在第一个脚本中突出显示了函数定义所在的行.

然后我browser()用来查看变量.然而,这并不理想,因为涉及一些大的矩阵.有没有办法让这些变量出现在RStudio的工作区中?

此外,当我从一行到另一行重新使用run时,它只运行到被调用的第一个脚本文件的末尾,它不会返回到调用函数并完成第二个文件的运行.

我怎样才能在RStudio中实现这些目标?

好的,这是一个简单的例子,下面的函数加法器在一个脚本中定义

adder<-function(a,b) {  
  browser()
  return(a+b)
 }
Run Code Online (Sandbox Code Playgroud)

我打电话来自第二个剧本

x=adder(3,4)
Run Code Online (Sandbox Code Playgroud)

在第二个脚本中调用adder时,在第一个脚本中启动browser().从这里我可以使用get("a")来获取a的值,但是a和b的值不会出现在RStudio的工作区中?

在这里的例子中它并不重要,但是当你有几个大矩阵时它确实如此.

GSe*_*See 3

如果您分配数据,.GlobalEnv它将显示在 RStudio 的“工作区”选项卡中。

> adder(3, 4)
Called from: adder(3, 4)
Browse[1]> a
[1] 3
Browse[1]> b
[1] 4
Browse[1]> assign('a', a, pos=.GlobalEnv)
Browse[1]> assign('b', b, pos=.GlobalEnv)
Browse[1]> c
[1] 7
> a
[1] 3
> b
[1] 4
Run Code Online (Sandbox Code Playgroud)