[R-br] Função não encontrada

Gustavo Carvalho gustavo.bio em gmail.com
Terça Agosto 30 12:05:33 BRT 2011


Você está tentando gerar distribuicões de abundâncias?

Imagino que o que vc quer seja do.call() e não call(). Veja também que
você está tentando multiplicar por um objeto da classe function, e não
pelo resultado da função:

> class(mean)
[1] "function"
> class(mean(1:10))
[1] "numeric"

Nessa linha f1(y,frac,n)*f2 o certo seria algo como f1(y,frac,n)*f2(...)


2011/8/30 . . <xkziloj em gmail.com>:
> func <- Vectorize(FUN=
>  function(y, frac, rate, sad, samp="Poisson", trunc=0, ...){
>                f0 <- function(y,frac,n) {
>                        f1 <- function(y,frac,n){
>                                dpois(y,frac*n)
>                        }
>                        dcom <- paste("d",deparse(substitute(sad)),sep="")
>                        dots <- c(as.name("n"),list(...))
>                        f2 <- function() call(dcom,dots)
>                        f <- function(n){
>                                f1(y,frac,n)*f2
>                        }
>                        myintegrate <- function() {
>                                r <- 0
>                                r1 <- 1
>                                x1 <- 0
>                                dx <- 20
>                                while(r1 > 10e-500) {
>                                        r1 <- integrate(f,x1,x1+dx)$value
>                                        r <- r + r1
>                                        x1 <- x1 + dx
>                                }
>                                integrate(f,x1,Inf)$valu
>                        }
>                        myintegrate()
>                }
>                f0(y,frac,n)/(1-f0(trunc,frac,n))
>        },"y")
>
> func(10, 0.1, 0.1, exp)
>
> 2011/8/30 . . <xkziloj em gmail.com>:
>> ...pois é, tenho dúvida sobre a estrutura em geral da minha função,
>> mas ontem estava funcionando deste jeito. Acho que f2 estava no
>> workspace e eu não percebi, depois que reiniciei o computador não
>> funcionou mais.
>>
>> Mas voltando ao ponto, redefini f2 como função agora. Só que dá outro erro
>>
>> Error in f1(y, frac, n) * f2 : non-numeric argument to binary operator
>>
>> Se puder me ajudar, ficarei muito agradecido.
>>
>>
>> 2011/8/30 Rodrigo Coster <rcoster em gmail.com>:
>>> f2 nao ta definida como função (olha como tu definiu f e f1 e compara com
>>> f2)
>>>
>>> []'s
>>>
>>> 2011/8/30 . . <xkziloj em gmail.com>
>>>>
>>>> Olá pessoal,
>>>>
>>>> ao rodar a função abaixo, obtenho o erro
>>>>
>>>> Error in f(x, ...) : could not find function "f2"
>>>>
>>>> ...mas f2 está definida logo acima de f...
>>>>
>>>> Alguma dica?
>>>>
>>>> Obrigado.
>>>>
>>>> func <- Vectorize(FUN=
>>>>  function(y, frac, rate, sad, samp="Poisson", trunc=0, ...){
>>>>                f0 <- function(y,frac,n) {
>>>>                        f1 <- function(y,frac,n){
>>>>                                dpois(y,frac*n)
>>>>                        }
>>>>                        dcom <- paste("d",deparse(substitute(sad)),sep="")
>>>>                        dots <- c(as.name("n"),list(...))
>>>>                        f2 <- call(dcom,dots)
>>>>                        f <- function(n){
>>>>                                f1(y,frac,n)*f2(n)
>>>>                        }
>>>>                        myintegrate <- function() {
>>>>                                r <- 0
>>>>                                r1 <- 1
>>>>                                x1 <- 0
>>>>                                dx <- 20
>>>>                                while(r1 > 10e-500) {
>>>>                                        r1 <- integrate(f,x1,x1+dx)$value
>>>>                                        r <- r + r1
>>>>                                        x1 <- x1 + dx
>>>>                                }
>>>>                                integrate(f,x1,Inf)$valu
>>>>                        }
>>>>                        myintegrate()
>>>>                }
>>>>                f0(y,frac,n)/(1-f0(trunc,frac,n))
>>>>        },"y")
>>>>
>>>> func(10, 0.1, 0.1, exp)
>>>> _______________________________________________
>>>> 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