функция с «load.Rdata» в цикле for

#r #function #for-loop

Вопрос:

Я пишу функцию с циклом for, и цикл for используется load.Rdata . Вот мой пример функции.

 tmp_fun = function(list_dtaname){
  for (ii in 1:length(list_dtaname)) {
    filename0 = paste(list_dtaname[ii],'.RData',sep = '')
    miceadds::load.Rdata(filename0, "dta00")
    rm(dta00)
  }
 

}

Когда я использую эту функцию

tmp_fun(samplelist)

Я получаю такой результат

 tmp_fun(list_pot_dtaname$out)
Warning messages:
1: In rm(dta00) : object 'dta00' not found
2: In rm(dta00) : object 'dta00' not found
3: In rm(dta00) : object 'dta00' not found
4: In rm(dta00) : object 'dta00' not found
5: In rm(dta00) : object 'dta00' not found
6: In rm(dta00) : object 'dta00' not found
7: In rm(dta00) : object 'dta00' not found
 

почему эта функция не работает?

Комментарии:

1. Я не создавал «dta00»

2. все те же предупреждения.. Что я пытаюсь сделать с исходным кодом, так это продолжать обновлять данные с помощью «miceadds::load.Rdata(имя файла 0,» dta00″)», и я что-то делаю с обновленным «dta00» в каждой итерации цикла

3. итак, меня беспокоит не » rm(dta00)», мой код, похоже, не обновляет данные из load.Rdata

4. Если я не использую функцию, нет никаких проблем

5. Можете ли вы попробовать dta00 <- miceadds::load.Rdata2( filename= paste(list_dtaname[ii],'.RData',sep = '')); rm(dta00)

Ответ №1:

Мы могли бы изменить его на load.Rdata2 то, где есть возможность указать path (вместо «имя объекта», которое должно быть создано), и назначение может быть выполнено на lhs <- для временного объекта, который мы rm

 tmp_fun <- function(list_dtaname){
  for (ii in 1:length(list_dtaname)) {
    filename0 = paste(list_dtaname[ii],'.RData',sep = '')
   dta00 <- miceadds::load.Rdata2(filename=
          paste(list_dtaname[ii],'.RData',sep = ''))
    rm(dta00)
  }
}
 

Проблема в load.Rdata том, где будет сохранен объект. Согласно с ?load.Rdata

Функция load.Rdata сохраняет загруженный объект в глобальной среде, в то время как load.Rdata2 загружает объект только в указанные среды