Obrigado, Benilton, está claro. Não deve ser coincidência não haver no save a opção append (como há em write.table, etc)...
Abraço, Alexandre Em 4 de abril de 2013 13:54, Benilton Carvalho <[email protected]>escreveu: > file.append funciona exatamente para o q vc descreveu: concatenar > arquivos *texto* (ou algum binario maluco q nao tenha marca de > fim/comeco de arquivo). > > Em 4 de abril de 2013 13:47, Alexandre Ribeiro Leichsenring > <[email protected]> escreveu: > > Interessante, agradeço pelas sugestões. > > > > O file.append me deu a esperança de fazer essa parte da manipulação sem > > carregar os dados na memória. Os dados serão processados em outras > > plataformas na etapa seguinte, então os dados definitivamente não > > precisariam passar pela memória. > > > > Mas (desculpem se a pergunta parece tola) para que serve o file.append se > > você não consegue acessar o conteúdo adicionado? O curioso é que o > > file.append funciona diferente com arquivos csv, ou seja, se faço a > > concatenação de dois arquivos csv por file.append e depois importo o > arquivo > > concatenado, recebo o conteúdo dos dois arquivos concatenados... > > > > Alexandre > > > > > > > > Em 4 de abril de 2013 13:08, Benilton Carvalho < > [email protected]> > > escreveu: > > > >> Carregue um arquivo por vez e salve o conteudo num formato proprio > >> para grandes volumes: NetCDF, HDF5. > >> > >> Uma alternativa e': > >> 1) ler o primeiro arquivo > >> 2) escrever o conteudo como um txt (separado por tabulacao, por exemplo) > >> 3) remover o obj da memoria > >> 4) ler o segundo arquivo > >> 5) escrever o conteudo no mesmo arquivo q o passo 2 (use o argumento > >> append=TRUE do write.table) > >> 6) remova o obj da memoria > >> 7) use ff ou bigmemory (ou sqldf) para "reimportar" o conteudo em > memoria > >> > >> E' uma alternativa mais lenta, mas tambem funciona. > >> > >> b > >> > >> Em 4 de abril de 2013 11:37, Manoel Galdino <[email protected]> > escreveu: > >> > Olá alexandre, > >> > > >> > Eu não sei o que o file.append faz, mas imagino que por concatenar > você > >> > quer > >> > dizer algo como merge (e não, por exemplo, rbind). Há formas de > >> > concatenar > >> > os bancos sem carregar na memória. Mas a questão é se você quer depois > >> > trabalhar no R com os dois bancos juntos, dependendo do que você quer > >> > fazer > >> > terá que carregar na memória. > >> > > >> > Uma forma de concatenar os bancos antes de carregar na memória, me > >> > parece, é > >> > usando o pacote sqldf. Mas no final ele vai colocar os dois bancos > >> > concatenados na memória, então não parece que vai resolver seu > problema. > >> > De > >> > todo modo... > >> > > >> > Eu imagino alguma coisa assim: > >> > > >> > library(sqldf) > >> > f1 <- file(“bigdf1.csv”) > >> > f2 <- file(“bigdf2.csv”) > >> > > >> > bigdf <- sqldf( > >> > “select * from f1 join f2 on key.f1 = key.f2”, > dbname > >> > = > >> > tempfile(), file.format = list(header = T, row.names = F))) > >> > > >> > Dessa forma ele carrega os bancos numa base de dados sqlite, executa a > >> > query > >> > (no caso, com um join) e retorna o banco para o R. Mas ele retorna > para > >> > o R! > >> > > >> > Outra possibilidade é o usar o pacote ff. > >> > > >> > abç > >> > M > >> > > >> > > >> > > >> > 2013/4/4 Alexandre Ribeiro Leichsenring <[email protected]> > >> >> > >> >> Obrigado, Benilton, > >> >> > >> >> A questão é exatamente essa, estou tentando evitar carregar os > arquivos > >> >> na > >> >> memória (estou trabalhando com um conjunto de arquivos que somam 50 > >> >> GB). > >> >> Existe alguma maneira de manipular essa marcação de fim de arquivo? > Ou > >> >> alguma outra sugestão para concatenar data.frames (com as mesmas > >> >> variáveis) > >> >> sem precisar carregar os dados na memória? > >> >> > >> >> Abraço, > >> >> > >> >> Alexandre > >> >> > >> >> > >> >> > >> >> > >> >> > >> >> Em 3 de abril de 2013 21:48, Benilton Carvalho > >> >> <[email protected]> escreveu: > >> >>> > >> >>> O que acontece e' q o arquivo final e' sim a concatenacao dos > dois... > >> >>> mas o formato possui marcadores de fim de arquivo... e, por isso, > >> >>> concatenar arquivos binarios nao e' uma boa ideia... > >> >>> > >> >>> A estrutura (super-simplificada) interna de um arquivo binario > gravado > >> >>> pelo R e': > >> >>> > >> >>> Magic-number #q identifica a validade do arquivo para aquele formato > >> >>> Cabecalhos e outros detalhes > >> >>> CONTEUDO... -> seus dados vem aqui > >> >>> Sinal de fim de arquivo... > >> >>> > >> >>> Dai' ao concatenar via file.append, vc fica com: > >> >>> > >> >>> Magic-number do arquivo1 > >> >>> Cabecalhos e outros detalhes do arquivo1 > >> >>> CONTEUDO do arquivo1 > >> >>> Sinal de fim de arquivo1 > >> >>> Magic-number do arquivo2 > >> >>> Cabecalhos e outros detalhes do arquivo2 > >> >>> CONTEUDO do arquivo2 > >> >>> Sinal de fim de arquivo2 > >> >>> > >> >>> Assim, o tamanho total e' a soma dos dois tamanhos... mas ao > comecar a > >> >>> ler o arquivo e chegar em "Sinal de fim de arquivo1", o R pára por > ali > >> >>> (afinal, ali e' um comando de "pare de ler, pq aqui eh o fim") e > >> >>> retorna os valores ate' entao obtidos... sem comecar no arquivo2... > >> >>> > >> >>> Se vc quiser de fato combinar ambos os arquivos, o q vc precisa > fazer > >> >>> e': > >> >>> > >> >>> obj1 = load("arquivo1.RData") > >> >>> obj2 = load("arquivo2.RData") > >> >>> save(list=c(obj1, obj2), file="arquivo1.RData") > >> >>> > >> >>> Eu entendo pq vc gostaria de algo como file.append (afinal, vc pode > >> >>> nao querer abrir cada um dos arquivos e entao salvar de novo, > etc)... > >> >>> mas, este e' o jeito "certo" de se fazer o q vc deseja. > >> >>> > >> >>> b > >> >>> > >> >>> Em 3 de abril de 2013 17:27, Alexandre Ribeiro Leichsenring > >> >>> <[email protected]> escreveu: > >> >>> > Olá a todos, > >> >>> > > >> >>> > Estou tendo dificuldades com a função file.append. > >> >>> > > >> >>> > Quando faço a concatenação de dois arquivos RData usando > >> >>> > "file.append", > >> >>> > vejo > >> >>> > que o tamanho do arquivo resultante (em bytes) é igual à soma dos > >> >>> > tamanhos > >> >>> > dos arquivos originais. Porém, quando carrego o arquivo > concatenado, > >> >>> > aparece > >> >>> > um objeto contendo somente os elementos do primeiro arquivo: > >> >>> > > >> >>> >> rm(list=ls()) > >> >>> > > >> >>> >> # Criando arquivo 1 > >> >>> >> (df <- data.frame(x = letters[1:5], y = 1:5)) > >> >>> > x y > >> >>> > 1 a 1 > >> >>> > 2 b 2 > >> >>> > 3 c 3 > >> >>> > 4 d 4 > >> >>> > 5 e 5 > >> >>> >> save(df, file = "df1.RData") > >> >>> >> rm(df) > >> >>> > > >> >>> >> # Criando arquivo 2 > >> >>> >> (df <- data.frame(x = LETTERS[1:5], y = 10*(1:5))) > >> >>> > x y > >> >>> > 1 A 10 > >> >>> > 2 B 20 > >> >>> > 3 C 30 > >> >>> > 4 D 40 > >> >>> > 5 E 50 > >> >>> >> save(df, file = "df2.RData") > >> >>> >> rm(df) > >> >>> > > >> >>> >> # Criando uma cópia do arquivo 1 > >> >>> >> file.copy(from = "df1.RData", to = "df.RData", overwrite = T) > >> >>> > [1] TRUE > >> >>> >> > >> >>> >> # Concatenando df2 em df. > >> >>> >> file.append("df.RData", "df2.RData") > >> >>> > [1] TRUE > >> >>> > > >> >>> >> file.info("df1.RData") > >> >>> > size isdir mode mtime > >> >>> > ctime > >> >>> > atime exe > >> >>> > df1.RData 177 FALSE 666 2013-04-03 17:19:39 2013-04-03 16:52:49 > >> >>> > 2013-04-03 > >> >>> > 16:52:49 no > >> >>> > > >> >>> >> file.info("df2.RData") > >> >>> > size isdir mode mtime > >> >>> > ctime > >> >>> > atime exe > >> >>> > df2.RData 197 FALSE 666 2013-04-03 17:19:39 2013-04-03 16:52:50 > >> >>> > 2013-04-03 > >> >>> > 16:52:50 no > >> >>> > > >> >>> >> file.info("df.RData") > >> >>> > size isdir mode mtime > >> >>> > ctime > >> >>> > atime exe > >> >>> > df.RData 374 FALSE 666 2013-04-03 17:19:39 2013-04-03 16:56:50 > >> >>> > 2013-04-03 > >> >>> > 16:56:50 no > >> >>> > > >> >>> >> load("df.RData") > >> >>> >> df > >> >>> > x y > >> >>> > 1 a 1 > >> >>> > 2 b 2 > >> >>> > 3 c 3 > >> >>> > 4 d 4 > >> >>> > 5 e 5 > >> >>> > > >> >>> > Alguém sabe dizer o que está acontecendo? > >> >>> > > >> >>> > Obrigado, > >> >>> > > >> >>> > Alexandre > >> >>> > > >> >>> > _______________________________________________ > >> >>> > R-br mailing list > >> >>> > [email protected] > >> >>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > >> >>> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e > forneça > >> >>> > código > >> >>> > mínimo reproduzível. > >> >>> _______________________________________________ > >> >>> R-br mailing list > >> >>> [email protected] > >> >>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > >> >>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e > forneça > >> >>> código mínimo reproduzível. > >> >> > >> >> > >> >> > >> >> _______________________________________________ > >> >> R-br mailing list > >> >> [email protected] > >> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > >> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça > >> >> código mínimo reproduzível. > >> > > >> > > >> > > >> > > >> > -- > >> > Manoel Galdino > >> > https://sites.google.com/site/galdinomcz/ > >> > > >> > _______________________________________________ > >> > R-br mailing list > >> > [email protected] > >> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > >> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça > >> > código > >> > mínimo reproduzível. > >> _______________________________________________ > >> R-br mailing list > >> [email protected] > >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça > >> código mínimo reproduzível. > > > > > > > > _______________________________________________ > > R-br mailing list > > [email protected] > > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça > código > > mínimo reproduzível. > _______________________________________________ > R-br mailing list > [email protected] > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça > código mínimo reproduzível. >
_______________________________________________ R-br mailing list [email protected] https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
