Когда вы сохраняете переменную в файле данных R с помощью save
, она сохраняется под тем именем, которое у нее было в сеансе, в котором она была сохранена. Когда я позже загружаю его из другого сеанса, он загружается с тем же именем, которое сценарий загрузки не может знать. Это имя может перезаписать существующую переменную с тем же именем в сеансе загрузки. Есть ли способ безопасно загрузить объект из файла данных в указанное имя переменной без риска затирания существующих переменных?
Пример:
Сохранение сеанса:
x = 5
save(x, file="x.Rda")
Сеанс загрузки:
x = 7
load("x.Rda")
print(x) # This will print 5. Oops.
Как я хочу, чтобы это работало:
x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
r
variable-names
rdata
Райан С. Томпсон
источник
источник
saveRDS
иreadRDS
, соответственно, сохранять и восстанавливать все атрибуты объекта, в том числе созданные приложением (черезattr
)? Я попытался использовать этот подход вместоsave
иload
, пытаясь найти способ решения моей проблемы. Однако, похоже, это не так, если я не делаю что-то не так: stackoverflow.com/questions/23701195/… .Я использую следующее:
источник
Вы можете создать новую среду, загрузить в нее файл .rda и получить оттуда объект. Однако это накладывает некоторые ограничения: либо вы знаете исходное имя вашего объекта, либо в файле сохраняется только один объект.
Эта функция возвращает объект, загруженный из предоставленного файла .rda. Если в файле более одного объекта, возвращается произвольный.
источник
new.env
ли необходимо? Разве сам вызов функции не создает временную среду?Вы также можете попробовать что-то вроде:
источник
Если кто-то хочет сделать это с простым исходным файлом, а не с сохраненным файлом Rdata / RDS / Rda, решение очень похоже на то, что предоставлено @Hong Ooi
Печать:
И в отдельном исходном файле TestSourceFile.R
Опять же, это решение работает только в том случае, если есть ровно один файл, если их больше, то оно просто вернет один из них (возможно, первый, но это не гарантируется).
источник
Я расширяю ответ от @ricardo, чтобы разрешить выбор конкретной переменной, если
.Rdata
файл содержит несколько переменных (так как у меня мало кредитов для редактирования ответа). Он добавляет несколько строк для чтения пользовательского ввода после перечисления переменных, содержащихся в.Rdata
файле.источник
Rdata файл с одним объектом
источник