[R-br] função, if dentro fo loop

Manoel Galdino mcz.fea em gmail.com
Terça Novembro 18 15:01:49 BRST 2014


Seu código tá bem ruim de ler...
Recomendo que você utilize o GitHub para postar seus códigos. Além disso,
ajudaria se você dissesse o que pretende com a função. Do jeito que está é
bem difícil ajudar.

Mas voltando a sua pergunta. Fiz algumas alterações no código (só
reorganizei). Veja se está funcionando...



conv<- function(n) {
                   u <- matrix(nrow=n+1,ncol=1)
                        for (i in 0:n) {
                                if (i==0) {
                                      f <- function(i) {pnorm(i,m,dp)}
                                      p<- function(i) {f(i)}
                                } else  {
                                      f  <-  function(i) {pnorm(i*1/n,m,dp)}
                                      p <-  function(i) {f(i)-f(i-1)}
                               }
                     I <-  function (i) {-p(i)*log2(p(i))}
                     u[i,]<- I(i)}
                   y <-u[0:n,]
                   y }


Use o browser pra você debugar seu código. No livro do Hadley
<http://adv-r.had.co.nz/Exceptions-Debugging.html> tem mais explicações
sobre como debugar um código.

abçs
M

ps.: Onde que os argumentos 'm' e 'dp' entram na função? Eles são valores
globais? Não é a prática mais recomendada...
ps.2: a cada iteração do loop, as funções f e p são subscritas, de forma
que ao final você terá uma f e uma p, dada por i igual a n. É isso mesmo
que você quer?

On Tue, Nov 18, 2014 at 2:00 PM, Daniela Recchia <
daniela_recchia em yahoo.com.br> wrote:

> Boa tarde pessoal,
>
> tenho certeza que meu problema é bem simples mas não estou conseguindo
> visualizar a solução, criei a função:
>
> conv<- function(n){u<-matrix(nrow=n+1,ncol=1)
>                    for (i in 0:n) {
>                      if(i==0) f<-function(i) {pnorm(i,m,dp)}
>                      else     f<- function(i) {pnorm(i*1/n,m,dp)}
>                      if(i==0) p<- function(i) {f(i)}
>                      else     p<- function(i) {f(i)-f(i-1)}
>                      I<- function (i) {-p(i)*log2(p(i))}
>                      u[i,]<- I(i)}
>                    y<-u[0:n,]; y}
>
> Mas para o caso onde i==0 não está sendo feito corretamente, e preciso
> idendificar se não tenho problemas na condição f(i)-f(i-1), o que ele
> retorna no lugar do i=0 é o valor do i=1.
>
> Alguém saberia me dar uma dica?
>
> Abraços,
>
> Daniela
>
> --
> Daniela Rodrigues Recchia
>
>
> “The standard of success in life is absolutely the amount of joy you feel”
> Esther & Jerry Hick
>
>
> _______________________________________________
> 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.
>



-- 
Manoel Galdino
https://sites.google.com/site/galdinomcz/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141118/abf0c74c/attachment.html>


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