0

我有两个脚本:

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)

和 select 1: .GlobalEnv,当我使用时,我可以看到my_varis 在全局环境中ls(),但是一旦我运行: source('source.R")在调试器中,我得到一个错误: Error in print(my_var) : object 'my_var' not found

我如何source('source.R")才能识别my_var调试器内的全局变量?感谢您的时间。

4

1 回答 1

1

在这里,我想我可能已经弄清楚了:

在调试器中运行source('source.R", local=TRUE)似乎有效:

来自:https ://www.rdocumentation.org/packages/base/versions/3.6.2/topics/source

local:TRUE、FALSE 或环境,确定解析表达式的评估位置。FALSE(默认值)对应于用户的工作空间(全局环境),TRUE 对应于调用源的环境。

然而,我想知道这个默认设置是否改变了,因为我不记得以前必须这样做。

于 2020-08-10T18:36:56.543 回答