
Benilton, bom saber desses pequenos detalhes. No meu caso, de uns tempos pra cá eu tenho trabalhado com bases de dados da ordem de milhoes de registros e perto de 50 variáveis. Via de regra, eu faço 99% do "trabalho sujo" (Consistência e transformação das variáveis) usando algum BD SQL (MySQL, Oracle, SQL Server, depende do caso) e após quase tudo arrumado, eu levo pro R. Com o R em 64 bits, tenho feito alguns testes para ver se faço parte da prepara ção já no R e esses milissegundos a menos tem feito a diferença, principalmente na parte de lidar com memória. Eu não faço 100% no R porque ainda faço essas transformações com mais rapidez e segurança usando SQL nativo. Um dia (ainda este ano) com certeza o farei com mais naturalidade no R. lmassis <at> yahoo <dot> com <dot> br assis.leonard <at> gmail <dot> com 2011/8/11 Benilton Carvalho <beniltoncarvalho@gmail.com>
A verdade, Leonard, e' que o que "mata" a opcao 1 e' a conversao da matriz logica is.na(x) para valores *reais* (para que a comparacao com 1 possa ser realizada).
Muitos usuarios sao surpreendidos com os seguintes resultados:
is.double(1) ## TRUE is.integer(1) ## FALSE
Entao, a expressao
is.na(x) == 1
vai exigir a conversao para numeros reais, que usa mais memoria e tempo para a conversao...
Agora, se vc tiver o previo conhecimento de que essa substituicao deve acontecer em apenas uma pequena fracao dos dados, vc pode matar a pau com:
x[which(is.na(x))] <- .1
Entretanto, e' importante notar que esses ganhos sao substanciais apenas para conjuntos de dados de grandes volumes ou atividades que sejam repetidas muitas e muitas vezes. Se for algo a ser executado apenas uma vez num conjunto de dados pequeno, o que o usuario fara' com os 3ms que ele economizou?
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.