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?