[R-br] loops no R

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


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>

>  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>
>
>>  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/ed34e7c1/attachment.html>


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