[R-br] Problemas lendo .dbf no R

Augusto Ribas ribas.aca em gmail.com
Domingo Novembro 16 21:48:53 BRST 2014


Opa, não prestei atenção nessa hora, você pode tentar o seguinte:

for (i in 1:length(arquivos)){

g[i] <- read.dbf(paste("I:/qgis_1/exercicio_buffer_L1/testes/teste_1/",
arquivos[i],sep=""))

               }

Agora com o paste você ta construindo o nome do arquivo, mas ta acessando o
arquivos pelo índice, e usando esse índice i para controlar onde vai
guardar também.

Desculpe mas eu não estou testando o código aqui, mas algo nessa linha deve
funcionar, acredito eu.
Ai você tem que iniciar esse vetor g, com a classe que você vai guardar.

Em 16 de novembro de 2014 03:14, Paulo Pimenta <paulopimenta6 em hotmail.com>
escreveu:

> Houve um problema na última parte com o looping. Minha dificuldade no
> atual momento é transformar os arquivos lidos em algo do qual se acessar os
> dados em seu interior.
>
> no looping há a variação de g[i] em relação ao que?
>
> r (nome_arquivo in arquivos){
> >
> > g[i] <- read.dbf(paste("I:/qgis_1/exercicio_buffer_L1/testes/teste_1/",
> > nome_arquivo,sep=""))
> >
> > }
>
> Não entendi esta parte, pois para mim o comando for deveria em seu
> interior ter algo numérico, mas mesmo fazendo o teste:
>
> r (i in 1:20){
> >
> > g[i] <-
> read.dbf(paste("I:/qgis_1/exercicio_buffer_L1/testes/teste_1/nome_arquivo"
> ,i , ".dbf", sep=""))
> >
> > }
>
> nada dá certo.
>
> Abraços.
>
> Paulo Henrique de A. S. Pimenta.
>
> Graduando em Meteorologia (Bacharelado) - IAG/USP.
> Fone: +5511981318435.
>
>
> ------------------------------
>
> > Message: 2
> > Date: Thu, 13 Nov 2014 10:53:21 -0300
> > From: Augusto Ribas <ribas.aca em gmail.com>
> > To: r-br em listas.c3sl.ufpr.br
> > Subject: Re: [R-br] Problemas lendo .dbf no R
> > Message-ID:
> > <CACMkfRxzSNWYuQcfjAExR5DA5Z8XdW1EZE+n19+YO08H+Rv1gg em 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 <
> paulopimenta6 em hotmail.com>
> > 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
> > > 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.
> > >
> >
> >
> >
> > --
> > 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
> > R-br em listas.c3sl.ufpr.br
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >
> >
> > ------------------------------
> >
> > Fim da Digest R-br, volume 47, assunto 14
> > *****************************************
>
> _______________________________________________
> 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.
>



-- 
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/20141116/ead29105/attachment.html>


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