Меня интересуют перечисление объектов в файле 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
?
В настоящее время я решаю эту проблему, загружая все во временную среду, а затем копирую то, что необходимо, но это неэффективно.