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

Benilton Carvalho beniltoncarvalho em gmail.com
Quinta Janeiro 17 17:36:50 BRST 2013


do.call(rbind, lapply(temp, function(.x) table(.x$Tipo, exclude=NULL)))

2013/1/17 Leandro Marino <leandromarino em leandromarino.com.br>:
> Valeu caros! Vou testar todas as sugestões.
>
> B, os df's eu já tenho. São umas (muitas) importações! :)
>
>
> Em 17 de janeiro de 2013 16:41, Benilton Carvalho
> <beniltoncarvalho em gmail.com> escreveu:
>
>> 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.
>> _______________________________________________
>> 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.
>
>
>
> _______________________________________________
> 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