问题描述
我有两个脚本:
run_source.R
:
my_var <- "test"
source("source.R")
和source.R
:
print(my_var)
我在unix终端上运行:
Rscript run_source.R
,系统将打印出预期的结果:
'test'
如果我修改run_source.R
进行调试:
my_var <- "test"
dump.frames(to.file=TRUE,include.GlobalEnv = TRUE)
source("source.R")
再次运行:
Rscript run_source.R
我仍然得到预期的"test"
,但是当我打开一个交互式R会话并返回到调试器时:
load("last.dump.rda"); debugger(last.dump)
并选择1: .GlobalEnv
,当我使用my_var
时,我可以看到ls()
在全局环境中,但运行后:
source('source.R")
在调试器中,出现错误:
Error in print(my_var) : object 'my_var' not found
如何获取source('source.R")
以便在调试器中识别全局变量my_var
?谢谢您的时间。
解决方法
在这里,我想我可能已经知道了:
在调试器中运行source('source.R",local=TRUE)
似乎可以正常工作:
来自:https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/source
local:TRUE,FALSE或环境,确定解析的位置 计算表达式。 FALSE(默认)对应于 用户的工作空间(全局环境),对环境为TRUE
但是,我确实想知道此默认设置是否更改,因为我不记得以前必须这样做。