[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