在不覆盖现有对象的情况下加载具有相同变量名的不同工作区
Load different workspaces with the same variable names without overwriting existing objects
我有一个需要加载多个 .RData
文件的管道。但是,这些文件都包含相同的变量名(例如,ls() = c(df1, df2)
),并且由于这些文件很大,我决定使用 mclapply(c(a.RData, b.RData, c.RData), load, .GlobalEnv, mc.cores = parallel::detectCores())
来节省时间。但是,由于它们具有相同的名称,因此 df1 df2
将被覆盖。那么,有什么办法可以解决这个问题吗?
我在想:
我可以在加载到 R 之前更改变量名称吗? .RData
来自其他人的管道,所以我现在不能让他们更改变量,所以我想知道是否有办法在 R 外部或之前更改 .RData
的变量名称加载中。
如果第一个不行,如何写一个参数检测变量是否因为重名而被覆盖,从而自动重命名变量。
加载到单独的环境:
# some script that outputs RData with x object
x <- head(mtcars)
save.image("temp.RData")
# another script with different x value
x <- 1:3
# now load our RData into new separate environment
e1 <- new.env(parent = baseenv())
load("temp.RData", envir = e1)
x
# [1] 1 2 3
e1$x
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
# Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
# Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
我有一个需要加载多个 .RData
文件的管道。但是,这些文件都包含相同的变量名(例如,ls() = c(df1, df2)
),并且由于这些文件很大,我决定使用 mclapply(c(a.RData, b.RData, c.RData), load, .GlobalEnv, mc.cores = parallel::detectCores())
来节省时间。但是,由于它们具有相同的名称,因此 df1 df2
将被覆盖。那么,有什么办法可以解决这个问题吗?
我在想:
我可以在加载到 R 之前更改变量名称吗?
.RData
来自其他人的管道,所以我现在不能让他们更改变量,所以我想知道是否有办法在 R 外部或之前更改.RData
的变量名称加载中。如果第一个不行,如何写一个参数检测变量是否因为重名而被覆盖,从而自动重命名变量。
加载到单独的环境:
# some script that outputs RData with x object
x <- head(mtcars)
save.image("temp.RData")
# another script with different x value
x <- 1:3
# now load our RData into new separate environment
e1 <- new.env(parent = baseenv())
load("temp.RData", envir = e1)
x
# [1] 1 2 3
e1$x
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
# Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
# Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1