[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