[R-br] loops no R

Humberto Hazin hghazin em hotmail.com
Sexta Março 30 12:41:45 BRT 2012


Benilton,

Muito obrigado! Resolveu meu problema!
So mais uma pergunta. Caso eu queira que os valores fique em apenas 5 
colunas como o exemplo abaixo
Lat   Long    Year        Mes   SST
23      49       2009        1
22      49       2007        1
21      49       2009        2
21      49       2010        1
.           .           .               .
.           .           .               .
.           .           .               .


Obrigado também ao Cleber!

Um abraço

Humberto

Em 3/30/2012 12:10 PM, Benilton Carvalho escreveu:
> 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 
> <mailto: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
>>     <mailto: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 <mailto: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  <mailto: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/20120330/aa4bb664/attachment.html>


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