[R-br] Como listar arquivos faltantes usando R
Leandro Marino
leandromarino em leandromarino.com.br
Terça Março 19 20:39:10 BRT 2013
Bem lembrado Rodrigo! :-)
Gosto muito da expand.grid!
Enviado de um dispositivo móvel.
Sent from a mobile device.
Em 19/03/2013 19:39, "Rodrigo Coster" <rcoster em gmail.com> escreveu:
> Pra criar um vetor com todos possiveis valores, tu pode usar
> expand.grid(). Se eu entendi certo, isso deve bastar:
> apply(expand.grid('MCD12Q1.A', 2001:2011, 'h', 10:14, 'v',
> sprintf('%02.0f', 8:13), '.hdf'), 1, paste, collapse='')
>
>
>
> 2013/3/19 Leandro Marino <leandromarino em leandromarino.com.br>
>
>> Thiago
>>
>> A função dir lista todos os arquivos de um diretório. Logo vc pode montar
>> um vetor com os nomes de todos os arquivos e chegar com o dir(). O que
>> estiver no primeiro e não estiver no segundo é o que você precisa baixar
>>
>> Enviado de um dispositivo móvel.
>> Sent from a mobile device.
>> Em 19/03/2013 18:51, "Thiago V. dos Santos" <thi_veloso em yahoo.com.br>
>> escreveu:
>>
>> Elias,
>>>
>>> Obrigado pela dica, mas... Você poderia elaborá-la, por favor?
>>>
>>> Obrigado,
>>> Thiago.
>>>
>>>
>>> ----- Original Message -----
>>> From: Elias Teixeira Krainski <eliaskrainski em yahoo.com.br>
>>> To: r-br em listas.c3sl.ufpr.br
>>> Cc:
>>> Sent: Tuesday, March 19, 2013 4:07 PM
>>> Subject: Re: [R-br] Como listar arquivos faltantes usando R
>>>
>>> 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.
>>>
>>>
>>> _______________________________________________
>>> 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.
>>>
>>> _______________________________________________
>>> 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.
>>>
>>
>> _______________________________________________
>> 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.
>>
>
>
> _______________________________________________
> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130319/01acd400/attachment.html>
Mais detalhes sobre a lista de discussão R-br