执行加载是否覆盖先前保存的所有对象?

时间:2018-08-02 06:12:48

标签: r rstudio rscript

我希望保持对象完好无损,而不会在每次使用load时都会覆盖它们(具有相同的名称和值)。为了明确起见,由于我以特定顺序触发了一组Rscript文件,因此我多次使用load。

原因是我正在使用Rscript,因此可以通过crontab(Linux或Mac)以预定的方式触发脚本。因此,我需要控制是否要修改单个对象(包括被相同名称和值的对象覆盖)。

下面是我在globalEnv中创建对象,保存完整的globalEnv并最终将tmp2.env中的特定对象提取到globalEnv中所做的测试。

我发现一个问题link,该问题将对象加载到单独的环境中并提取特定对象,这是我当前代码的一部分。

如果可能的话,我想澄清的是避免覆盖对象。可以使用加载以外的其他方法来实现吗?

# Extract specific objects from, [tmp2.env] to globalEnv.
# Investigate if objects are being kept intact during load.

a <- 1  # Create object in globalEnv
b <- 2  # Create object in globalEnv
c <- 3  # Create ojbect in globalEnv

save.image ()         # Save all objects to globalEnv.

rm (list=ls())        # Remove all objects from global.env, do not save.

tmp2.env <- new.env() # Create a temporary environment in globalEnv.

load ( # Load complete [.RData] from [globalEnv] into environment [tmp2.env],
       # since load does not allow specifying specific objects to load.
      file = '.RData',
      envir = tmp2.env,
      verbose = TRUE
)

x <- 10            # Add object [x] in globalEnv.

b <- tmp2.env$b    # Tap out object [b] into globalEnv.

rm (tmp2.env)       # Remove [tmp2.env]

save.image ()

0 个答案:

没有答案