Подтвердить что ты не робот

Как сохранить() с определенным именем переменной

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

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

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)
4b9b3361

Ответ 1

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

save(list = this.csv.data$unique_tag, file=saved_file_name)

Ответ 2

Мое предпочтение - избегать имени в файле RData при загрузке:

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

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

Ответ 3

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

saveRDS(this.csv.data, saved_file_name)
# later
mydata <- readRDS(saved_file_name)