Ответ 1
Просто укажите аргументы, которые вы используете. С вашим кодом работает следующее:
save(list = this.csv.data$unique_tag, file=saved_file_name)
Я неоднократно применяю функцию для чтения и обработки кучи файлов 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)
Просто укажите аргументы, которые вы используете. С вашим кодом работает следующее:
save(list = this.csv.data$unique_tag, file=saved_file_name)
Мое предпочтение - избегать имени в файле RData при загрузке:
obj = local(get(load('myfile.RData')))
Таким образом, вы можете загружать различные файлы RData и называть объекты, которые хотите, или хранить их в списке и т.д.
Вам действительно нужно использовать saveRDS/readRDS для сериализации ваших объектов. сохранение и загрузка - это сохранение целой среды.
saveRDS(this.csv.data, saved_file_name)
# later
mydata <- readRDS(saved_file_name)