Загружать объекты, содержащиеся в файле .RData, если они еще не существуют - PullRequest
0 голосов
/ 17 октября 2018

Вопрос: Можно ли читать 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

1 Ответ

0 голосов
/ 17 октября 2018

Я выяснил довольно чистую функцию, чтобы сделать это, основываясь на предложениях комментариев:

 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
...