Я проанализировал очень большую базу данных с более чем 5 миллионами строк данных и 40 столбцами.Результаты разбиты на небольшие файлы .Rdata по практическим соображениям.Всего у меня более 3000 файлов размером до 1 МБ.
Я разработал быстрый цикл для объединения этих файлов в один фрейм данных с использованием dplyr, однако это очень медленно, и я считаю, что есть более быстрые способыдля этого.
Я пытался использовать матрицы с предварительным распределением, но мои данные были как текстовые, так и числовые и получали ошибки.Фреймы данных даже медленнее при использовании базы R.
list_files = as.data.frame(list.files(path = "output", pattern = 'Rdata'))
names(list_files) = 'full_name'
list_files = list_files %>%
separate(full_name, sep ="_", into = c('col1','col2')) %>%
separate(col2, sep = '.R', into = c('col3','col4')) %>%
mutate(col3 = as.numeric(col3)) %>%
arrange(col3) %>% mutate(col3 = as.character(col3))
datax <- c()
for(i in 1:length(list_files$col3))
{
load(paste('output/MyData_',list_files$col3[i],'.Rdata',sep=''))
##here loads results_df2
datax = datax %>% bind_rows(results_df2)
if((i %% 100) == 0) { print(i)}
}
Есть ли более эффективный способ написать этот цикл?