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@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@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.