Как сохранить () с определенным именем переменной - PullRequest
29 голосов
/ 13 января 2011

Я неоднократно применяю функцию для чтения и обработки множества CSV-файлов.При каждом запуске функция создает фрейм данных (this.csv.data) и использует save () для записи его в файл .RData с уникальным именем.Проблема в том, что позже, когда я читаю эти .RData файлы, используя load(), имена загруженных переменных не являются уникальными, потому что каждый из них загружается с именем this.csv.data ....

Я хотел бысохраните их с уникальными тегами, чтобы они вышли правильно названными, когда я load() их.Я создал следующий код для иллюстрации.

this.csv.data = list(data=c(1:9), unique_tag = "some_unique_tag")
assign(this.csv.data$unique_tag,this.csv.data$data)
# I want to save the data, 
# with variable name of <unique_tag>, 
# at a file named <unique_tag>.dat
saved_file_name <- paste(this.csv.data$unique_tag,"RData",sep=".")
save(get(this.csv.data$unique_tag), saved_file_name)

, но возвращается последняя строка:

"Error in save(get(this_unique_tag), file = data_tag) : 
  object ‘get(this_unique_tag)’ not found"

, даже если следующее возвращает данные просто отлично:

get(this.csv.data$unique_tag)

Ответы [ 4 ]

33 голосов
/ 13 января 2011

Просто назовите аргументы, которые вы используете. С вашим кодом отлично работает следующее:

save(list = this.csv.data$unique_tag, file=saved_file_name)
27 голосов
/ 13 января 2011

Я предпочитаю избегать имени в загружаемом файле RData:

obj = local(get(load('myfile.RData')))

Таким образом, вы можете загружать различные файлы RData и называть объекты как хотите, сохранять их в списке и т. Д.

12 голосов
/ 07 ноября 2013

Вы действительно должны использовать saveRDS / readRDS для сериализации ваших объектов.сохранить и загрузить для сохранения целых сред.

saveRDS(this.csv.data, saved_file_name)
# later
mydata <- readRDS(saved_file_name)
0 голосов
/ 06 октября 2018

вы можете использовать

save.image("myfile.RData")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...