<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><br><br>Paulo Henrique de A. S. Pimenta.<div><br></div><div>Graduando em Meteorologia (Bacharelado) - IAG/USP.<br>Fone: +5511981318435.</div><br>Obrigado pela ajuda!! Suas dicas foram de grande valor!!<br><div><br>> ------------------------------<br>> <br>> Message: 2<br>> Date: Thu, 13 Nov 2014 10:53:21 -0300<br>> From: Augusto Ribas <ribas.aca@gmail.com><br>> To: r-br@listas.c3sl.ufpr.br<br>> Subject: Re: [R-br] Problemas lendo .dbf no R<br>> Message-ID:<br>> <CACMkfRxzSNWYuQcfjAExR5DA5Z8XdW1EZE+n19+YO08H+Rv1gg@mail.gmail.com><br>> Content-Type: text/plain; charset="utf-8"<br>> <br>> Opa, talvez você possa tentar o seguinte:<br>> <br>> <br>> Um exemplo, suponto que vc tenha 20 arquivos:<br>> <br>> Quando voce da arquivos <- list.files(pattern="\\.dbf$"), você gostaria de<br>> ver algo como isso que fiz no vetor1 certo?<br>> <br>> > vetor1<-paste("corte_estrada_aneis",1:20,".dbf",sep="")<br>> > vetor1<br>> [1] "corte_estrada_aneis1.dbf" "corte_estrada_aneis2.dbf"<br>> "corte_estrada_aneis3.dbf"<br>> [4] "corte_estrada_aneis4.dbf" "corte_estrada_aneis5.dbf"<br>> "corte_estrada_aneis6.dbf"<br>> [7] "corte_estrada_aneis7.dbf" "corte_estrada_aneis8.dbf"<br>> "corte_estrada_aneis9.dbf"<br>> [10] "corte_estrada_aneis10.dbf" "corte_estrada_aneis11.dbf"<br>> "corte_estrada_aneis12.dbf"<br>> [13] "corte_estrada_aneis13.dbf" "corte_estrada_aneis14.dbf"<br>> "corte_estrada_aneis15.dbf"<br>> [16] "corte_estrada_aneis16.dbf" "corte_estrada_aneis17.dbf"<br>> "corte_estrada_aneis18.dbf"<br>> [19] "corte_estrada_aneis19.dbf" "corte_estrada_aneis20.dbf"<br>> <br>> <br>> Mas o que você ve na verdade é o que está no vetor 2, certo, porque ta tudo<br>> na ordem lexicografia,(Essa palavra é bonita né? Nem sei se escrevi certo,<br>> desculpa)<br>> <br>> > vetor2<-sort(vetor1)<br>> > vetor2<br>> [1] "corte_estrada_aneis10.dbf" "corte_estrada_aneis11.dbf"<br>> "corte_estrada_aneis12.dbf"<br>> [4] "corte_estrada_aneis13.dbf" "corte_estrada_aneis14.dbf"<br>> "corte_estrada_aneis15.dbf"<br>> [7] "corte_estrada_aneis16.dbf" "corte_estrada_aneis17.dbf"<br>> "corte_estrada_aneis18.dbf"<br>> [10] "corte_estrada_aneis19.dbf" "corte_estrada_aneis1.dbf"<br>> "corte_estrada_aneis20.dbf"<br>> [13] "corte_estrada_aneis2.dbf" "corte_estrada_aneis3.dbf"<br>> "corte_estrada_aneis4.dbf"<br>> [16] "corte_estrada_aneis5.dbf" "corte_estrada_aneis6.dbf"<br>> "corte_estrada_aneis7.dbf"<br>> [19] "corte_estrada_aneis8.dbf" "corte_estrada_aneis9.dbf"<br>> <br>> Mas beleza, você ta vendo o vetor 2 na saida do arquivos <-<br>> list.files(pattern="\\.dbf$"), quando da arquivos.<br>> Uma possibilidade seria reordenar o seu arquivos, antes de fazer a leitura,<br>> da seguinte formula.<br>> <br>> Crie um vetor de numeros, usando uma expressão regular para pegar somente<br>> os números, das string do arquivo, depois transforme em numero pro R<br>> entender:<br>> <br>> <br>> > numeros<-as.numeric(gsub("[a-z_.]", "\\1", vetor2))<br>> > numeros<br>> [1] 10 11 12 13 14 15 16 17 18 19 1 20 2 3 4 5 6 7 8 9<br>> > vetor2<br>> [1] "corte_estrada_aneis10.dbf" "corte_estrada_aneis11.dbf"<br>> "corte_estrada_aneis12.dbf"<br>> [4] "corte_estrada_aneis13.dbf" "corte_estrada_aneis14.dbf"<br>> "corte_estrada_aneis15.dbf"<br>> [7] "corte_estrada_aneis16.dbf" "corte_estrada_aneis17.dbf"<br>> "corte_estrada_aneis18.dbf"<br>> [10] "corte_estrada_aneis19.dbf" "corte_estrada_aneis1.dbf"<br>> "corte_estrada_aneis20.dbf"<br>> [13] "corte_estrada_aneis2.dbf" "corte_estrada_aneis3.dbf"<br>> "corte_estrada_aneis4.dbf"<br>> [16] "corte_estrada_aneis5.dbf" "corte_estrada_aneis6.dbf"<br>> "corte_estrada_aneis7.dbf"<br>> [19] "corte_estrada_aneis8.dbf" "corte_estrada_aneis9.dbf"<br>> <br>> <br>> Veja que a numeração ta na ordem dos arquivos, agora ordene pelos numeros<br>> usando order, que ele vai te dar a ordem que você quer pros indices.<br>> > order(numeros)<br>> [1] 11 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 12<br>> > numeros[order(numeros)]<br>> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20<br>> <br>> <br>> <br>> Agora você aplica a ordem dos numeros no seu arquivos, que você pegou o ls<br>> do diretorio.<br>> > vetor2[order(numeros)]<br>> [1] "corte_estrada_aneis1.dbf" "corte_estrada_aneis2.dbf"<br>> "corte_estrada_aneis3.dbf"<br>> [4] "corte_estrada_aneis4.dbf" "corte_estrada_aneis5.dbf"<br>> "corte_estrada_aneis6.dbf"<br>> [7] "corte_estrada_aneis7.dbf" "corte_estrada_aneis8.dbf"<br>> "corte_estrada_aneis9.dbf"<br>> [10] "corte_estrada_aneis10.dbf" "corte_estrada_aneis11.dbf"<br>> "corte_estrada_aneis12.dbf"<br>> [13] "corte_estrada_aneis13.dbf" "corte_estrada_aneis14.dbf"<br>> "corte_estrada_aneis15.dbf"<br>> [16] "corte_estrada_aneis16.dbf" "corte_estrada_aneis17.dbf"<br>> "corte_estrada_aneis18.dbf"<br>> [19] "corte_estrada_aneis19.dbf" "corte_estrada_aneis20.dbf"<br>> ><br>> <br>> Ai você le tudo usando essa ordem<br>> <br>> for (nome_arquivo in arquivos){<br>> <br>> g[i] <- read.dbf(paste("I:/qgis_1/exercicio_buffer_L1/testes/teste_1/",<br>> nome_arquivo,sep=""))<br>> <br>> }<br>> <br>> Eu acho que isso deve funcionar.<br>> Bem espero ter mais ajudado que atrabalhado :)<br>> <br>> <br>> <br>> Em 12 de novembro de 2014 03:08, Paulo Pimenta <paulopimenta6@hotmail.com><br>> escreveu:<br>> <br>> > Prezados,<br>> ><br>> > Estou com um problema ao ler arquivos .dbf no R. Abaixo segue a lógica que<br>> > usei em meu código para fazer a leitura:<br>> ><br>> ><br>> > ##########################################################################################<br>> ><br>> ><br>> ><br>> > ###########################################################################################<br>> > ##comando para ler um arquivo ".dbf"<br>> ><br>> > ##<br>> > ##<br>> ><br>> > ##<br>> > ##library("foreign")<br>> ><br>> > ##<br>> > ##<br>> ><br>> > ##<br>> > ##read.dbf("I:/qgis_1/exercicio_buffer_L1/testes/teste_1/corte_estrada_aneis.dbf")<br>> > ##<br>> > ##<br>> ><br>> > ##<br>> ><br>> > ###########################################################################################<br>> > ##<br>> > ##Salvando tudo em forma de lista<br>> ><br>> > library("foreign")<br>> ><br>> > setwd("I:/qgis_1/exercicio_buffer_L1/testes/teste_1")<br>> ><br>> > arquivos <- list.files(pattern="\\.dbf$")<br>> ><br>> > x <- lapply(arquivos, read.dbf)<br>> ><br>> > ##Exportando os comprimentos de cada estrada cortada por um anel<br>> ><br>> > for (i in 1:91){<br>> ><br>> > y[[i]] <- x[[i]]<br>> > vector_length[i] <- sum(y[[i]][,2])<br>> ><br>> > }<br>> ><br>> ><br>> > ##########################################################################################<br>> ><br>> > Assim como mostrado no exemplo acima estou lendo um arquivo chamado "corte_estrada_aneis.dbf",<br>> > todavia possui um banco com 91 desses arquivos numerados de forma que seus<br>> > nomes ficam, por exemplo: corte_estrada_aneis.1dbf,<br>> > corte_estrada_aneis2.dbf, corte_estrada_aneis3.dbf, ... até finalmente corte_estrada_aneis91.dbf.<br>> > O problema na leitura dos .dbf consiste que a lógica acima usada por mim<br>> > faz com que a ordenação saia errada, ou seja, ele faz a leitura dos<br>> > arquivos corte_estrada_aneis1.dbf, corte_estrada_aneis12.dbf, corte_estrada_aneis13.dbf<br>> > e assim por diante. Uma tentativa minha, porém não muito bem sucedida foi a<br>> > seguinte:<br>> ><br>> ><br>> > #########################################################################################<br>> ><br>> > library("foreign")<br>> ><br>> > for (i in 1:9){<br>> ><br>> > g[i] <-<br>> > read.dbf("I:/qgis_1/exercicio_buffer_L1/testes/teste_1/corte_estrada_aneis[i].dbf")<br>> ><br>> > }<br>> ><br>> > g<br>> ><br>> ><br>> > #########################################################################################<br>> ><br>> > Mas como tudo esta contido em " " o índice [i] será lido literalmente.<br>> > Peço ajuda aos colegas para poder solucinar este problema, seja com a minha<br>> > lógica ou com alguma idéia diferente.<br>> ><br>> > Abraços a todos!<br>> ><br>> > Paulo Henrique de A. S. Pimenta.<br>> ><br>> > Graduando em Meteorologia (Bacharelado) - IAG/USP.<br>> > Fone: +5511981318435.<br>> ><br>> > _______________________________________________<br>> > R-br mailing list<br>> > R-br@listas.c3sl.ufpr.br<br>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça<br>> > código mínimo reproduzível.<br>> ><br>> <br>> <br>> <br>> -- <br>> Grato<br>> Augusto C. A. Ribas<br>> <br>> Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org><br>> Github: https://github.com/Squiercg<br>> Lattes: http://lattes.cnpq.br/7355685961127056<br>> -------------- Próxima Parte ----------<br>> Um anexo em HTML foi limpo...<br>> URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141113/eaa31741/attachment-0001.html><br>> <br>> ------------------------------<br>> <br>> Subject: Legenda do Digest<br>> <br>> _______________________________________________<br>> R-br mailing list<br>> R-br@listas.c3sl.ufpr.br<br>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> <br>> <br>> ------------------------------<br>> <br>> Fim da Digest R-br, volume 47, assunto 14<br>> *****************************************<br></div> </div></body>
</html>