[R-br] Empilhar arquivos de um diretório em arquivo único

Cesar Rabak cesar.rabak em gmail.com
Segunda Fevereiro 26 19:06:32 -03 2018


OK, Yuri.

A advertência é *benigna* ela está informando que não faz sentido ao mesmo
tempo
> write.table(A1, paste0(raiz, x, '\\', x,'.txt'), sep = "\t", *append = T*,
*col.names =* T, row.names = F)
ou seja:
adicionar linhas e ter nomes de colunas, lembre-se que *o código não sabe
que essa é a primeira escrita*!

Para mim, mais sintomático é que o nº índice da última iteração do *loop* é
11 em vez do dez esperado para dez arquivos no RAR que você anexou.

Para provar que sabemos como remediar, você pode tentar:

1) no   if(i == 1){ colocar append = F na chamada a write.table; e

2) nas duas chamadas a write.table, mudar a extensão do arquivo pra algo
diferente (por exemplo tsv) e rodar o script.

HTH (de novo pensado sem testes...)

--
Cesar Rabak



2018-02-26 16:31 GMT-03:00 Yury Duarte <yurynepomuceno em gmail.com>:

> Boa tarde Luis e Cesar.
>
> Antes de mais nada, obrigado por apresentar essa nova abordagem, Luis. O
> resultado desse código foi exatamente o que eu esperava obter com o que
> apresentei no corpo do email.
>
> Cesar, as saidas que obtive ao rodar o comando print foram:
>
> [1] "1 - ok!"
> [1] "2 - ok!"
> [1] "3 - ok!"
> [1] "4 - ok!"
> [1] "5 - ok!"
> [1] "6 - ok!"
> [1] "7 - ok!"
> [1] "8 - ok!"
> [1] "9 - ok!"
> [1] "10 - ok!"
> [1] "11 - ok!"
> Warning messages:
> 1: In write.table(A1, paste0(raiz, x, "\\", x, ".txt"), sep = "\t",  :
>   appending column names to file
>
> Não soube como interpretar essa advertência, se puder me ajudar a entender
> o erro nesse código, seria de grande ajuda.
>
> Mais uma vez, agradeço pela colaboração de todos!
>
> Att
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
> Em 26 de fevereiro de 2018 16:24, Cesar Rabak <cesar.rabak em gmail.com>
> escreveu:
>
>> Yury,
>>
>> Como a resposta do Luis é uma solução diferente, apenas comento o
>> seguinte:
>>
>> *caveat emptor* raciocínio em cima do código sem testar. A linha de
>> código:
>>
>> *  for(i in 1:length(dir(paste0(raiz, x)))){ *
>>
>> Ao ler o diretório n vezes, na segunda passada passará a ver um arquivo
>> adicional "NASA.txt", certo? e você não vai querer que ele seja incluso no
>> meio de "londrina.txt" e "pelotas.txt", não é?
>>
>> Quais mensagens e qual resultados das impressões " print (paste0(i, '
>> ok'))" você obteve?
>>
>>
>> 2018-02-26 15:22 GMT-03:00 Yury Duarte via R-br <r-br em listas.c3sl.ufpr.br
>> >:
>>
>>> Boa tarde colegas listeiros, como vão?
>>>
>>> Estou buscando unir diversos arquivos .txt de determinados diretórios
>>> num arquivo único.
>>> Todos os diretórios tem o mesmo número de arquivos (10) e cada um deles
>>> tem o mesmo numero de linhas e de colunas (36 x 23), de forma que o arquivo
>>> final gerado deveria ser um objeto de dimensão 360 x 23.
>>> Entretanto, em algum ponto, o comando não funciona de modo correto e o
>>> arquivo final gerado nunca bate com o desejado.
>>>
>>> Segue o código: (*em anexo, seguem os arquivos de um dos diretórios
>>> para teste*)
>>>
>>> rm(list = ls())
>>>
>>> raiz = "C:\\Users\\Yury\\Desktop\\"
>>> x = "NASA"
>>>
>>> setwd(paste0(raiz, x))
>>>
>>>   #--------------------Juntar Arquivos num Unico
>>> .txt--------------------#
>>>   for(i in 1:length(dir(paste0(raiz, x)))){
>>>
>>>     A1 = read.table(dir(paste0(raiz, x))[i], header = T, sep = "\t");
>>> head(A1)
>>>     if(i == 1){
>>>       write.table(A1, paste0(raiz, x, '\\', x,'.txt'), sep = "\t",
>>> append = T, col.names = T, row.names = F)
>>>     }
>>>     else{
>>>       write.table(A1, paste0(raiz, x, '\\', x,'.txt'), sep = "\t",
>>> append = T, col.names = F, row.names = F)
>>>     }
>>>     print (paste0(i, ' ok'))
>>> }
>>>
>>> Desde já, agradeço pela ajuda!
>>>
>>> Yury Duarte
>>> Engenheiro Agrônomo - ESALQ/USP
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em listas.c3sl.ufpr.br
>>> 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.
>>>
>>
>>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20180226/46a2662c/attachment-0001.html>


Mais detalhes sobre a lista de discussão R-br