无法运行R代码以模拟随机样本

时间:2015-12-18 11:06:10

标签: r

我需要做的是绘制1000个随机样本的泊松分布,其中n = 100,lambda = 6

据我所知,这样的代码应该这样做:

 taskpois <- function(size, leng){
  for (i in 1:leng){
    randompois <- rpois(size, 6)
    taskmlepois[i] <- mean(randompois)
  }
  return(taskmlepois)
 }

tasksample <- taskpois(size=100, leng=1000)     

但是在我跑完之后没有任何反应。此后,我再也无法在控制台中编写和运行命令了,因为没有更多的“&gt;”在行的开头签名,R开始崩溃。

我在某种程度上弄错了我编写的代码函数或者它只是错误的代码吗?

1 个答案:

答案 0 :(得分:6)

运行taskpois函数时,它不会返回错误消息:

Error in taskmlepois[i] <- mean(randompois) : 
  object 'taskmlepois' not found

...?这应该是因为你没有初始化taskmlepois变量,所以你不能为它赋值!

以下代码可以使用:

taskpois <- function(size, leng){
  taskmlepois <- NULL
  for (i in 1:leng){
    randompois <- rpois(size, 6)
    taskmlepois[i] <- mean(randompois)
  }
  return(taskmlepois)
}

或者,您可以明确地将其初始化为给定长度的数字

taskmlepois <- numeric(size)

这也应该提高性能。但基本上,你可以通过单行获得你想要的东西:

tapply(rpois(size*leng, 6), rep(1:leng, each = size), mean)

由于来自rpois的抽奖i.i.d.按顺序对其进行抽样不会改变任何内容。