Использование цикла for для записи фрейма данных в виде файла dta в R
У меня есть фреймы данных в списке a
и я хочу использовать цикл, чтобы сохранить их как rda
и напиши как dta
, Я не понимаю, почему я получаю сообщение об ошибке, что кадр данных объекта не может быть найден:
for (f in a) {
for (name in 1:length(filenames)) {
save(as.data.frame(f),file = paste("~/Dropbox/Data_Insert/Panels/",name,end_rda,sep=""))
write.dta(as.data.frame(f),file = paste("~/Dropbox/Data_Insert/Panels/",name,end_dta,sep=""))
}
}
Error in save(as.data.frame(f), file = paste("~/Dropbox/Data_Insert/Panels/", :
object ‘as.data.frame(f)’ not found
Так что f
, это будет индексировать фрейм данных в списке? я сделал as.data.frame(f)
потому что, когда я только использовал f
Я получил сообщение:
The object "dataframe" must have class data.frame
Я изменил код для f в a, но он по-прежнему возвращает ошибку о том, что as.data.frame(f) не найден.
1 ответ
Я думаю, что это то, что вы пытаетесь сделать. Я предполагаю что a
это список фреймов данных и filenames
символьный вектор одинаковой длины
for (i in 1:length(a)) {
to_save = as.data.frame(a[[i]])
save(to_save, file = paste0("~/Dropbox/Data_Insert/Panels/", filenames[i], end_rda))
write.dta(to_save, file = paste0("~/Dropbox/Data_Insert/Panels/", filenames[i], end_dta))
}
Обратите внимание, что save
сохраняет имя объекта R, поэтому, когда вы load
любой из этих файлов будет загружен в рабочую область с именем to_save
, Это кажется плохим. Для отдельных объектов R я настоятельно рекомендую вам использовать saveRDS
и создавать файлы.RDS вместо save
, Посмотрите, например, ответ Рикардо на этот вопрос для примера Rda vs RDS.