r-适用于环境的加载无法按预期工作



从这段简单的代码

df = tibble(A = 1)
save(df, file = file.path("tmp.RData"))
df = tibble(A = 2)
# tmp <- rlang::env()
tmp <- environment()
load("tmp.RData", envir = tmp)

我希望df包含2,tmp$df包含1,但两者都包含1,所以加载的df会覆盖全局环境中的一个。这不是我期望的将envir参数传递给load的行为。

有人能解释一下原因吗?我是不是错过了一些重要的设计?

注意:将基本Renvironment替换为rlang::env,工作正常。

注意,environment()返回当前环境;它不会创造一个新的环境。在这里你可以看到它只是全球环境

tmp <- environment()
tmp
# <environment: R_GlobalEnv>

因此您正在替换全局环境中df的值。

如果你想要一个新的环境,请使用

tmp <- new.env()
load("tmp.RData", envir = tmp)

这将加载到不同的环境中,并保持全局环境中df的值不变。

相关内容

最新更新