Olá Manoel,
obrigada pelo retorno. Não conhecia o GitHub obrigada pela indicação.
A princípio os valores de m e dp são fixos, não são importantes nesse exemplo, e não tenho nenhum Bug pra solucionar, a função funciona perfeitamente, com a única exceção de que o valor para i=0 não é calculado corretamente.
É isso mesmo que eu quero, ter os valores de f e p para então realizar a multiplicação que será retornada na matriz. Aqui um exemplo: (usei m=0.1; dp=sqrt(0.05))
> conv(10)
[1] 0.437497149 0.437497149 0.399621300 0.323958199 0.224710500 0.129711990
[7] 0.061315128 0.023552114 0.007329468 0.001846871
Veja que o primeiro e o segundo valores sãi iguais (o que na verdade corresponde a i=1) e é isso que quero resolver.
Abraços,
Daniela
--
Daniela Rodrigues Recchia
M.Sc. in Statistics
Tel. (Mobil): +49 01578 7588382
Germany
“The standard of success in life is absolutely the amount of joy you feel”
Esther & Jerry Hick
Em Terça-feira, 18 de Novembro de 2014 18:01, Manoel Galdino <mcz.fea@gmail.com> escreveu:
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 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?