Acho que esta é mais facil para os conhecedores do purrr.
Tenho varios arquivos .gz compactados espalhados em subdiretorios.
Estou tentando uma forma de fazer:
1 de forma recursiva (“varrendo” os subdiretorios)
2. a descompactação (unzip/unz) destes destes arquivos
3. seguido da leitura dos mesmos (.csv) e, finalmente
4. montando o resultados de todos em um único data.frame.
Nota: Por equanto estou com um resultado parcial (em análise) usando o read_dir.
Estou tendo problemas com a escala, o volume de dados para executar.
São 150MB em arquivos compactados!!
Rodei o código que vc sugeriu e tive que interromper a execução depois de 10h!! rodando sem concluir
Usando o read_dir, foi bem rapido a descomptacação e leitura recursiva, mas como não consegui fazer o read com separação das colunas pelas vírgulas (sep =",") resultou em uma coluna com todas as informações.
O data.frame é gigante!! com 24M obs of 2 variables
Tentei depois usar o separate através de 29 colunas mas esgotou a memória.
# Descompactando e lendo recursivamente dos subdiretorios
require(textreadr)
files <- read_dir(path = "D:/Local/stats/Nov-2020/", pattern = ".gz",recursive = TRUE)
# Header do data.frame está na primeira linha do data.frame
colnames <- files %>%
select(content) %>%
slice (1L) %>%
str_split_fixed(n=29,pattern = ",")
#Tentativa de separar
temp <- files %>%
separate(content,into = colnames,sep = ",")
Erros:
Erro: não é possível alocar vetor de tamanho 0 Kb
Erros durante o embrulho: could not allocate memory (0 Mb) in C function ‘R_AllocStringBuffer’
Error: no more error handlers available (recursive errors?); invoking ‘abort’ restart