Изучение содержимого файла .rdata путем присоединения к новой среде - возможно?

Меня интересуют перечисление объектов в файле RDATA и загрузка только выбранных объектов, а не всего набора (в случае, если некоторые из них могут быть большими или могут уже существовать в среде энт). Я не совсем понимаю, как это сделать, когда есть конфликты в именах, так как attach () работает не так хорошо.

1: Для проверки содержимого файла данных R без загрузка: Этот вопрос похож, но отличается от того, который задан в , перечисляя содержимое файла данных R без загрузки

В этом случае предложенное решение было:

attach(filename)
ls(pos = 2)
detach()

Если есть конфликты имен между объектами в файле и в глобальной среде появляется это предупреждение: Следующие объекты замаскированы _by_ '.GlobalEnv':

Я попытался создать новую среду, но не могу подключиться к ней. Например, возникает та же ошибка:

lsfile   <- function(filename){
  tmpEnv <- new.env()
  evalq(attach(filename), envir = tmpEnv)
  tmpls <- ls(pos = 2)
  detach()
  return(tmpls)
}
lsfile(filename)

Возможно, я напутал с evalq (или eval ). Есть ли другой способ избежать конфликта имен?

2: Если я хочу получить доступ к объекту - если нет конфликтов имен, я могу просто поработать с объектом из файла .rdat или скопировать его в новый один. Если есть конфликты, как получить доступ к объекту в пространстве имен файла?

Например, если мой файл - «sample.rdat», а объект - SurveyData, а объект SurveyData уже существует в глобальной среде, тогда как мне получить доступ к нему из пространства имен file: sample.rdat ?

В настоящее время я решаю эту проблему, загружая все во временную среду, а затем копирую то, что необходимо, но это неэффективно.

9
задан Community 23 May 2017 в 12:15
поделиться