[R-br] loops no R

Humberto Hazin hghazin em hotmail.com
Sexta Março 30 13:19:39 BRT 2012


Benilton,

Mais uma vez obrigado! Problema resolvido!

Não se preocupes não colocarei mais anexos a lista (eu não sabia).

Humberto

Em 3/30/2012 1:14 PM, Benilton Carvalho escreveu:
> Usando o 'resultados' da minha primeira resposta, na qual postei o codigo:
>
> resultadosFinais = do.call(rbind, lapply(resultados, '[', c('lat', 
> 'lng', 'sst', 'mes', 'year')))
>
> Adicionalmente, considere a gentileza de nao enviar arquivos anexados 
> para a lista.
>
> benilton
>
> 2012/3/30 Humberto Hazin <hghazin em hotmail.com 
> <mailto:hghazin em hotmail.com>>
>
>     Olá Benilto,
>     Segue em anexo os resultados gerados pelo teu codigo (result.csv)
>     para que vc possa ter uma ideia do que foi gerado. o que estava
>     perguntando era se seria possivel deixar da seguinte forma anexo
>     (result1.csv)
>
>     Obrigado mais uma vez
>
>     Humberto
>
>
>     Em 3/30/2012 12:46 PM, Benilton Carvalho escreveu:
>>     nao tenho como ter ideia sobre as "5 colunas", afinal escrevi o
>>     codigo sem saber o que sao os dados.
>>
>>     se vc se refere a concatenar todos os data.frames resultantes num
>>     data.frame maior, use:
>>
>>     resultados = do.call(rbind, resultados)
>>
>>     b
>>
>>     2012/3/30 Humberto Hazin <hghazin em hotmail.com
>>     <mailto:hghazin em hotmail.com>>
>>
>>         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/eefcd165/attachment-0001.html>


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