我希望保持对象完好无损,而不会在每次使用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 ()