我需要做的是绘制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开始崩溃。
我在某种程度上弄错了我编写的代码函数或者它只是错误的代码吗?
答案 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.按顺序对其进行抽样不会改变任何内容。