Uma pequena amostra dos dados ajudaria. Mas com certeza dá pra vetorizar isso, e talvez até usar o pacote data.table.
Eu entendi que c é 60.000 e h 200? Talvez resolva o loop externo: bancof[,1] %in% obsf[1,1] & bancof[,2] %in% obsf[1,2] Isso deve retornar um vetor de True e False. Apenas some os T (ou os F) e você tem a sua resposta. Aí você pode passar um loop para cada um. Outra opção, se o "%in%" não funcionar, é usar o match. Por exemplo: is.na(match(bancof[,1] %in% obsf[1,1])) & is.na(match(bancof[,2] %in% obsf[1,2])) O match retorna NA quando não há match. Assim, com os is.na, vocÊ tem um vetor que é T onde não há match. Combinando os dois testes, vocÊ tem um vetor onde é T se não houver os dois matchs. Depois, basta dá um sum no vetor para ter a qtde que não há match. Como o h é de 200, um loop em h deve ser rápido. Mas creio que dá pra evitar um loop completamente, talvez pensando em termos de algebra linear e multiplicações de vetores, construindo alguma indicadora. MAs sem um exemplo reproduzível fica difícil ajudar. abçs M 2013/4/19 Helena Turon <[email protected]> > Prezados, > > Para contar os horários ou dias sem observações na estação meteorológica, > dados faltantes. > Fiz um “for” no R: > > > > c=comprimento do vetor teórico (sequencia de datas e horários que deveriam > existir observações). > > h= comprimento dos dados das estações (pode haver horários ou dias > seguidos sem observações). > > > > igual=0 > > > > for (m in 1:c){ > > for (jj in 1:h){ > > if ((bancof[m,1] == obsf[jj,1]) & (bancof[m,2] == obsf[jj,2]) ) > > {igual = igual+1} > > } > > } > > > > faltantes = c-igual > > > > > > coluna 1 é data dd/mm/aaaa e > > coluna 2 horário (0, 12, 18) > > > > Mas ele está demorado: uns 20 minutos por estação (pois elas têm umas > 60.000 observações). Eu tenho umas 200 estações. > > Serão quatro dias, só para os dados do Brasil, têm ainda outros países da > América do Sul. > > > Será que existe alguma função no R que faça isto mais depressa? > > Obrigada, > > -- > Helena Turon Balbino > Meteorologista > Instituto Nacional de Meteorologia - INMET > 7º DISTRITO DE METEOROLOGIA (SP e MS) > Tel: (11) 5051-5700 > ******************************************************** > > _______________________________________________ > R-br mailing list > [email protected] > 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. > -- Manoel Galdino https://sites.google.com/site/galdinomcz/
_______________________________________________ R-br mailing list [email protected] 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.
