[R-br] loops no R

Benilton Carvalho beniltoncarvalho em gmail.com
Sexta Março 30 12:10:01 BRT 2012


f = function(fname){
   year = substr(fname, 2, 5)
   day1 = as.integer(substr(fname, 6, 8))
   month = format(as.Date(strptime(paste(year, "01", "01", sep='-'),
'%Y-%m-%d'))+day1-1, '%m')
   objOut = paste('m', substr(year, 3, 4), month, sep='')

   hdf4to5(fname)
   assign(objOut, satinGet(paste(fname, 5, sep=''), lats=c(10, -30),
lons=c(-20, -50), itype='oceancolor'))
   assign(objOut, data.frame(extract(simplifySat(get(objOut), extent=1))))
   assign(objOut, cbind(get(objOut), mes=as.integer(month),
year=as.integer(year)))
   return(get(objOut)
}

## vetor com o nome de todos os arquivos hdf4
fns = list.files(pattern='\\.hdf$')
resultados = lapply(fns, f)

Claramente, eu nao experimentei o codigo acima... e fica pra vc a tarefa de
testar e corrigir algum parenteses que esteja faltando ou algum outro
problema.

benilton

2012/3/30 Humberto Hazin <hghazin em hotmail.com>

>  Bom dia Benilton,
>
> Obrigado por responder!
>
> É o seguinte quando baixo a imagem ela já vem com esse número todo
> (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060
> significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou
> seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004
> ou seja mes 1
>
> Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder
> trabalhar! Então criei uma função no R (hdf4to5) para para ler um
> executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo
> plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em
> hdf5 e fazer as extrações da área que quero ter esses dados
> "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50),
> itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função
> "simplifySat(m0401, extent=1)" em seguida criei uma função no R
> "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
>
>
> hdf4to5("S20040012004031.hdf");m0401 <-
> satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50),
> itype="oceancolor")
>  m0401<-(simplifySat(m0401,
> extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1;
> m0401$year<-2004
>
>  hdf4to5("S20040322004060.hdf");m0402 <-
> satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50),
> itype="oceancolor")
>  m0402<-(simplifySat(m0402,
> extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2;
> m0402$year<-2004
>
> Eu não sei se ficou mais claro agora!
>
> Humberto
>
>
> Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
>
> Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem
> primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"?
> (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos
> apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
>
>  b
>
> 2012/3/29 Humberto Hazin <hghazin em hotmail.com>
>
>> Prezados,
>>
>> Venho mais uma vez pedir ajuda a voces para resolver um problema!
>>
>> baixei uma série de images de satelite, por ano e mes (2004 a 2010)
>> totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria
>> de criar um loop para nao ter que digitar essas 163 linhas ou mais para
>> extrair latitude, longitude e SST. conforme o codigo abaixo:
>>
>> hdf4to5("S20040012004031.hdf");m0401 <-
>> satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50),
>> itype="oceancolor")
>>  m0401<-(simplifySat(m0401,
>> extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1;
>> m0401$year<-2004
>>
>>  hdf4to5("S20040322004060.hdf");m0402 <-
>> satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50),
>> itype="oceancolor")
>>  m0402<-(simplifySat(m0402,
>> extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2;
>> m0402$year<-2004
>>
>> Alguem poderia me ajudar!
>>
>> Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso
>> precisem posso colocar o parte do codigo para baixarem um ou mais arquivos
>> e testarem
>>
>> Humberto
>>
>> _______________________________________________
>> 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 listR-br em listas.c3sl.ufpr.brhttps://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/20120330/9d556d3c/attachment.html>


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