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

Paulo Justiniano paulojus em leg.ufpr.br
Quinta Janeiro 26 12:05:11 BRST 2012


Leandro

olhabndo aina mais seu codigo:

1 fiquei na divida se voce quere usar Theta ou Theta[i]

2. ma parece que nao precisa da funcao no for nem do apply que sugeri 
antes

Como voce usa os vetores todos os elementos de
ci + (1-ci)/(1 + exp(-D*ai*(Theta-bi)))
pode ser calculado diretamente com os vetores, nao?

algo como
c + (1-c)/(1 + exp(-D*a*(Theta-b)))

mas observando como usar Theta



On Thu, 26 Jan 2012, Paulo Justiniano wrote:

> Caro Leandro
>
> seu código não é exatamentre reproduzável (a,b,c nao sao dados nem criados, 
> nem a sua dimensao é conhecida) (nem mínimo)...
> a seria bom comentários aqui sobre o que pretende
> alem de que o proprio código poderia ser comentado
>
> Mas de qualque forma o critico me parece ser a inclusao de colunas
> em "dados" a cada passo do for()
> Este mecanismo não é bom por ficar copiando o objeto
>
> Possivies melhorias passariam por:
>
> 1. mudar a funcao para receber um vetor
> 2. rodar com apply o quye deve gerar uma matriz que seria concatenada de uma 
> só vez a dados
>
> algo9 como:
>
> PudT <- function(abc, Th, D){
>    PudT <- abc[3] + (1-abc[3])/(1 + exp(-D*abc[1]*(Th-abc[2])))
>    PudT
> }
>
> dados <- cbind.data.frame(cod=sprintf('%06d',1:100000),Theta)
>
> #for(i in 1:100){
> #dados[,i+2] <- PudT(dados$Theta,parit[i,1],parit[i,2],parit[i,3],1.7)
> #}
>
> dados$res <- apply(parit, 1, Th=Theta, D=1.7)
>
>
> Sugiro testar em um conjunto pequeno para confrontar os resultados com os 
> seus
>
>
>
>
> On Thu, 26 Jan 2012, Leandro Marino wrote:
>
>> Caros,
>> alguém sabe me ajudar a otimizar o código do link abaixo:
>> 
>> http://pasteit.com/16646
>> 
>> Como referencia, coloquei o arquivo parit no link:
>> http://pasteit.com/16647
>> 
>> Agradeco qualquer ajuda!!!
>> 
>> 
>> 
>> Atenciosamente,
>> Leandro Marino
>> http://www.leandromarino.com.br (Fotógrafo)
>> http://est.leandromarino.com.br/Blog (Estatístico)
>> Cel.: + 55 21 9845-7707
>> Cel.: + 55 21 8777-7907
>> 
>> 
>


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