问题:仅当当前环境中不存在R对象时,才可以从RData文件中读取它们吗?
为什么:我希望能够在R脚本的顶部设置一些变量,但要加载先前脚本的完成变量。不过,如果将它们设置在顶部,我希望它们覆盖load()
变量。
示例数据和问题:
a <- 5
b <- 2
save(a,b,file="testa.RData")
rm(a)
a <- 10
load("testa.RData")
#CURRENTLY:
> a
[1] 5
> b
[1] 2
#DESIRED RESULT:
> a
[1] 10
> b
[1] 2
答案 0 :(得分:0)
根据评论建议,我发现了一个相当干净的功能:
lnexist <- function(filename){
ee <- local({load(filename); environment()})
lsee <- ls(ee)
lse <- ls()
for(x in lsee){
if(!exists(x)){
tempvar <<- ee[[x]]
assign(x,tempvar,envir = .GlobalEnv)
}
}
}
#TESTING
a<- 10
b <- 5
c <- 3
save(a,b,c,file="testc.RData")
rm(b)
c<- 8
lnexist("testc.RData")
> a
[1] 10
> b
[1] 5
> c
[1] 8