[R-br] Digest R-br, volume 6, assunto 12
Leonard Assis
assis.leonard em gmail.com
Quinta Agosto 11 08:56:23 BRT 2011
Benilton,
pelo pouco que entendo de R esta sua idéia de "system.time(x[is.na(x)] <-
.1)" tem cara de ser muito mais rápida e eficiente em termos de memória que
as duas anteriores, pois assim como a opção 1, só faz algo onde realmente
interessa.
a 1ª opção seria quase tão rápida quanto, mas faz uma comparação a mais ao
comparar o "is.na(x)" com "1"
Quando ligar meu notebook eu vou testar as 3 opções pra ter certeza
lmassis <at> yahoo <dot> com <dot> br
assis.leonard <at> gmail <dot> com
2011/8/11 Benilton Carvalho <beniltoncarvalho em gmail.com>
> Compare ainda com:
>
> system.time(x[is.na(x)] <- .1)
>
> Na sua opcao 1, vc:
> a) Cria uma matriz logica marcando NAs;
> b) Converte a matriz logica (4 bytes cada elemento) para uma matriz
> numerica (8 bytes cada elemento)
> c) Cria uma segunda matriz logica comparando a matriz em (b) com 1;
> d) Usa os indices de (c) para fazer a substituicao
>
> Na opcao 2, vc:
> a) Cria uma matriz logica marcando NAs (esse e' o is.na); (mat1)
> b) Checa (internamente no ifelse) se cada um desses elementos de (a)
> e' um NA e guarda esse resultado (mat2)
> c) Faz uma copia de (a) (mat3)
> d) Cria uma matriz com a negacao de (b) (mat4)
> e) Cria um vetor q eh o subconjunto de mat3 usando os indices de mat4
> (chame essa de mat5)
> f) Apaga mat3 e mat4
> g) Testa se algum elemento de (e) e' verdadeiro
> - se sim:
> g1) cria novamente a matriz de negacao de (b) (agora ela e' mat6)
> g2) gera a combinacao de mat6 com mat1 (chame a combinacao de mat7);
> g3) apaga mat6;
> g4) cria uma copia de mat1 (chame de mat8);
> g5) cria um vetor com o comprimento do numero de verdadeiros de mat7;
> g6) substitui em mat8 as posicoes indicadas por mat7 pelo vetor criado em
> g5;
> g7) apaga mat1
> g8) renomeia mat8 para mat1;
> h) repete todo o G para os falsos, substiuindo pelo valor alternativo
> (q e' x, no seu caso)
> i) substitui os faltantes (nao inclusos em G ou H) por NA
> j) retorna o resultado final
>
> b
> _______________________________________________
> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110811/8580463c/attachment.html>
Mais detalhes sobre a lista de discussão R-br