Como listar arquivos faltantes usando R

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"

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@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.

Elias, Obrigado pela dica, mas... Você poderia elaborá-la, por favor? Obrigado, Thiago. ----- Original Message ----- From: Elias Teixeira Krainski <eliaskrainski@yahoo.com.br> To: r-br@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@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@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.

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@yahoo.com.br> escreveu:
Elias,
Obrigado pela dica, mas... Você poderia elaborá-la, por favor?
Obrigado, Thiago.
----- Original Message ----- From: Elias Teixeira Krainski <eliaskrainski@yahoo.com.br> To: r-br@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@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@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@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.

E a partir do vetor retornado pelo dir, substr() quebra string nas posicoes especificadas e o resultado e' tabulado. ## CMR: a <- c("MCD12Q1.A2001.h10v08.hdf", "MCD12Q1.A2001.h10v09.hdf", "MCD12Q1.A2001.h10v10.hdf", "MCD12Q1.A2001.h10v11.hdf", "MCD12Q1.A2001.h11v08.hdf", "MCD12Q1.A2001.h11v09.hdf") table(substr(a, 10, 13)) table(substr(a, 16, 17)) table(substr(a, 10, 13), substr(a, 16, 17)) On Tue, 2013-03-19 at 19:16 -0300, Leandro Marino wrote:
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@yahoo.com.br> escreveu: Elias,
Obrigado pela dica, mas... Você poderia elaborá-la, por favor?
Obrigado, Thiago.
----- Original Message ----- From: Elias Teixeira Krainski <eliaskrainski@yahoo.com.br> To: r-br@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@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@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@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@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.

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@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@yahoo.com.br> escreveu:
Elias,
Obrigado pela dica, mas... Você poderia elaborá-la, por favor?
Obrigado, Thiago.
----- Original Message ----- From: Elias Teixeira Krainski <eliaskrainski@yahoo.com.br> To: r-br@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@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@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@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@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.

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@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@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@yahoo.com.br> escreveu:
Elias,
Obrigado pela dica, mas... Você poderia elaborá-la, por favor?
Obrigado, Thiago.
----- Original Message ----- From: Elias Teixeira Krainski <eliaskrainski@yahoo.com.br> To: r-br@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@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@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@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@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@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.

Mas o objetivo é apenas verificar se todos os arquivos foram 'baixados' ... expand.grid() serve para outros propósitos.
participantes (4)
-
Elias Teixeira Krainski
-
Leandro Marino
-
Rodrigo Coster
-
Thiago V. dos Santos