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