[R-br] Otimização de código

Benilton Carvalho beniltoncarvalho em gmail.com
Quinta Janeiro 17 16:41:48 BRST 2013


se vc criar o seu 'temp' de forma q ele contenha um indice para o
grupo, conforme abaixo (onde eu apenas forco a barra p criar o
data.frame do jeito q eu imagino ser melhor, vc pode cria-lo de modo
bem mais eficaz dentro do seu primeiro for() ):

temp = do.call(rbind, lapply(1:length(temp), function(i) cbind(i, temp[[i]])))

enfim, com o 'tempo' como acima, tudo o que vc precisa e':

with(temp, table(i, Tipo))

b

On 17 January 2013 17:53, Walmes Zeviani <walmeszeviani em gmail.com> wrote:
> Uma coisa que o Benilton sempre faz quando o for() envolve um número
> conhecido fixo de elementos é criar o objeto do tamanho de etapas do for()
>
> #temp <- list() # troque por
> temp <- vector(mode="list", lenght=20)
> #for(i in 1:20){ # troque por
> D <- data.frame(matrix(ncol=3,nrow=100))
> colnames(D) <- c('ID','Tipo','Valor')
> for(i in 1:length(temp)){
> #    temp[[i]] <- data.frame(matrix(ncol=3,nrow=100)) # pode ser criada fora
> do laço, D
> #    colnames(temp[[i]]) <- c('ID','Tipo','Valor')
>     temp[[i]] <- D
>     temp[[i]]$ID    <- paste(i,sprintf("%03d",1:100),sep='')
>     temp[[i]]$Tipo  <- factor(sample(0:10,100,replace=T),levels=c(0:10))
>     temp[[i]]$Valor <- rnorm(100,100,20)
> }
> dado <- data.frame(matrix(ncol=13,nrow=20))
> colnames(dado) <- c('ID',paste('Tipo',sprintf('%02d',0:10),sep=''),'TipoNA')
> for(i in 1:20){
> dado[i,] <- c(i,table(temp[[i]]$Tipo,exclude=NULL))
> }
>
> Não explorei tudo que pode ser alterado. Ao mesmo tempo você pode fazer isso
> com a função replicate() também.
>
> À disposição.
>
> ==========================================================================
> Walmes Marques Zeviani
> LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
> Departamento de Estatística - Universidade Federal do Paraná
> fone: (+55) 41 3361 3573
> VoIP: (3361 3600) 1053 1173
> e-mail: walmes em ufpr.br
> skype: walmeszeviani
> twitter: @walmeszeviani
> homepage: http://www.leg.ufpr.br/~walmes
> linux user number: 531218
> ==========================================================================
>
> _______________________________________________
> 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.


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