Re: [R-br] Problemas lendo .dbf no R

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 <ribas.aca@gmail.com> To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Problemas lendo .dbf no R Message-ID: <CACMkfRxzSNWYuQcfjAExR5DA5Z8XdW1EZE+n19+YO08H+Rv1gg@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@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@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@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
------------------------------
Fim da Digest R-br, volume 47, assunto 14 *****************************************

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@gmail.com> To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Problemas lendo .dbf no R Message-ID: <CACMkfRxzSNWYuQcfjAExR5DA5Z8XdW1EZE+n19+YO08H+Rv1gg@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@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@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@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
------------------------------
Fim da Digest R-br, volume 47, assunto 14 *****************************************

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@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@gmail.com> To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Problemas lendo .dbf no R Message-ID: <CACMkfRxzSNWYuQcfjAExR5DA5Z8XdW1EZE+n19+YO08H+Rv1gg@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@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@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/attac...
------------------------------
Subject: Legenda do Digest
_______________________________________________ R-br mailing list R-br@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@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
participantes (2)
-
Augusto Ribas
-
Paulo Pimenta