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/
Github: https://github.com/Squiercg
Lattes: http://lattes.cnpq.br/7355685961127056