[R-br] Como listar arquivos faltantes usando R

Elias Teixeira Krainski eliaskrainski em yahoo.com.br
Terça Março 19 18:07:32 BRT 2013


Em problema similar ao seu eu faço uma tabela 
em R com ano nas linhas e meses nas colunas

Exemplo (no seu caso nao sei a posicao de mes):
a <- dir('diretorioDosArquivos')
table(substr(a, 10, 13)) ### anos



On Tue, 2013-03-19 at 13:53 -0700, Thiago V. dos Santos wrote:
> Olá pessoal,
> 
> Baixei centenas de imagens de satélite e agora devo conferir se tenho todas que realmente vou precisar. A nomenclatura das imagens segue o padrão:
> 
> MCD12Q1.A2001.h10v08.hdf
> MCD12Q1.A2001.h10v09.hdf
> 
> MCD12Q1.A2001.h10v10.hdf
> 
> MCD12Q1.A2001.h10v11.hdf
> 
> 
> MCD12Q1.A2001.h11v08.hdf
> 
> MCD12Q1.A2001.h11v09.hdf
> 
> MCD12Q1.A2001.h11v10.hdf
> 
> MCD12Q1.A2001.h11v11.hdf
> 
> MCD12Q1.A2001.h11v12.hdf
> 
> MCD12Q1.A2001.h11v13.hdf
> 
> e assim por diante
> 
> onde 2001 é o ano e vai de 2001 a 2011.
> h10 é um componente horizontal da imagem e vai de a 10 a 14.
> v08 é um componente vertical da imagem e vai de a 08 a 13.
> 
> O que preciso fazer é o seguinte: varrer uma lista de todas as imagens possíveis, que vão de 2001 a 2011, h10 a h14 e v08 a v13, e testar se tem alguma que está faltando. Para isso eu uso a função "file.exists" dentro de três loops: "ano", "h" e "v".
> 
> No final da mensagem estou colando o código que usei para fazer isso. Ele até funciona, mas não salva a lista inteira, e sim somente o último nome. Estou fazendo alguma coisa errada no loop. Acredito também que fazer três loops não é a maneira mais otimizada de fazer isso, porém foi a primeira que veio na minha cabeça.
> 
> Alguém pode ajudar, criticando o código?
> 
> Obrigado desde já,
> Thiago.
> 
> 
> ##################################################################
> # Gather all files
> dir <- ('/Users/dossa013/data/MODIS/MCD12Q1/original')
> files <- list.files(dir, pattern='hdf', full.names=T)
> 
> # Set beginning and ending years
> byear <- 2001 
> eyear <- 2011
> 
> # Set tiles
> h1 <- 10
> h2 <- 14
> v1 <- 08
> v2 <- 13
> 
> # Loop over year and then over tiles
> for (x in byear:eyear) {
>   for (y in h1:h2)      {
>     for (z in v1:v2)     {
>       name <- paste('/Users/dossa013/data/MODIS/MCD12Q1/original/MCD12Q1.A',x,'.h',y,'v',z,'.hdf', sep='')
>       if (file.exists(name)==F)
> 
>       missing <- name
> 
>   } # end of v
>  } # end of h
> } # end of year
> > missing
> [1] "/Users/dossa013/data/MODIS/MCD12Q1/original/MCD12Q1.A2011.h14v9.hdf"
> _______________________________________________
> 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.




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