• R语言
  • 请大家看看这段代码错在哪里

这是汤老师《R语言与统计分析》中的一段代码,但运行时总是报错,请大家帮助看看错误在哪里呢?

bioassay.post=function(alpha=0.1,beta=5){
  k=4
  x=c(-0.86,-0.30,-0.05,0.73)
  n= c(5,5,5,5)
  y=c(0,1,3,5)
  prod=1
  prod=prod((exp(alpha+beta*x)/(1+exp(alpha+beta*x)))^y*(1/(1+exp(alpha+beta*x)))^(n-y))
  return(prod)
}

alphax=seq(-5,10,length=1000)
betay=seq(-10,40,length=1000)
post=outer(alphax,betay,'bioassay.post')
错误于dim(robj) <- c(dX, dY) :
  dims [product 1000000]与对象长度[1]不匹配
    11 年 后

    outer() 需要 FUN 是向量化的 (输入和输出维度相同),而 prod() 的输出都是 1 维的。

    使用 Vectorize() 封装一下就可以了。

    bioassay.post <- function(alpha = 0.1, beta = 5) {
      k <- 4
      x <- c(-0.86, -0.30, -0.05, 0.73)
      n <- c(5, 5, 5, 5)
      y <- c(0, 1, 3, 5)
      p <- 1
      p <- prod((exp(alpha + beta * x) / (1 + exp(alpha + beta * x)))^y * (1 / (1 + exp(alpha + beta * x)))^(n - y))
      p
    }
    
    vbioassay.post <- Vectorize(bioassay.post)
    
    alphax <- seq(-5, 10, length = 1000)
    betay <- seq(-10, 40, length = 1000)
    post <- outer(alphax, betay, FUN = "vbioassay.post")