[R-br] Digest R-br, volume 6, assunto 12

Benilton Carvalho beniltoncarvalho em gmail.com
Quinta Agosto 11 08:24:17 BRT 2011


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


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