[R-br] Generalizando chamada de função

João Felipe Santos joao.eel em gmail.com
Terça Setembro 6 09:57:05 BRT 2011


Olá,

o erro ocorre ao fazer a composição as.list(c(y, lambda)). Você gera
uma única lista contendo como valores o conteúdo do vetor composto por
y E lambda. Substitua a func2 pela seguinte:

func2 <- function(y, a, rate, samp) {
       f1 <- function(n, y, a, rate, samp) {

               SampDist <- function(y, a, n, samp) {
                       lambda <- a * n
                       dcom <- paste("d", samp, sep="")
                       do.call(dcom, list(x=y, lambda=lambda))
               }

               dexp(n, rate) * SampDist(y, a, n, samp)
       }
       integrate(f1, 0, Inf, y, a, rate, samp)
}

Vai funcionar como você espera.

[]s

--
João Felipe Santos

2011/9/6 . . <xkziloj em gmail.com>:
> Olá pessoal,
>
> Gostaria da ajuda de vcs para entender o que acontece no código da
> "func2". Meu plano é fazer com que func2 e func1 retornem os mesmos
> valores. Para "func1" obtenho...
>
> 0.25 with absolute error < 8.4e-05
>
> Mas "func2" está retornando...
>
> Error in dpois(1, 0.1, 23.3065168689948, 0.000429064542600244,
> 3.82988398013855,  :
>  unused argument(s) (0.000429064542600244, 3.82988398013855,
> 0.00261104515224461, 1.37999516465199, 0.0072464022020844,
> 0.673787740945863, 0.0148414691931943, 0.383193602946711,
> 0.0260964690514175, 0.236612585866545, 0.0422631787036055,
> 0.152456705113438, 0.0655923922306948)
>
>
> func1 <- function(y, a, rate) {
>        f1 <- function(n, y, a, rate) {
>                lambda <- a * n
>                dexp(n, rate) * dpois(y, lambda)
>        }
>        integrate(f1, 0, Inf, y, a, rate)
> }
>
> func1(1, 0.1, 0.1)
>
>
> func2 <- function(y, a, rate, samp) {
>        f1 <- function(n, y, a, rate, samp) {
>
>                SampDist <- function(y, a, n, samp) {
>                        lambda <- a * n
>                        dcom <- paste("d", samp, sep="")
>                        dots <- as.list(c(y, lambda))
>                        do.call(dcom, dots)
>                }
>
>                dexp(n, rate) * SampDist(y, a, n, samp)
>        }
>        integrate(f1, 0, Inf, y, a, rate, samp)
> }
>
> func2(1, 0.1, 0.1, "pois")
>
>
>
> Desde já obrigado.
> _______________________________________________
> 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