【发布时间】:2016-11-28 17:24:59
【问题描述】:
所以...我有一些问题...
使用 R,我试图模拟 n=10 和 p=0.6,大小为 1 的二项式分布,然后得到多少个 1 和 0,这个模拟应该重复 200 次,所以比如取一个200行2列的矩阵,第一列有1个,第二列有0个。
我定义了一个函数:
binom10.2 <- function(i){
x <- rbinom(10,1,0.6)
y <- as.vector(table(x))
return(y)
}
这给了我一个结果,例如:
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 7 3
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 4 6
我需要这个结果,在矩阵中复制 200 次,如下所示:
[,1] [,2]
[1,] 1 9
[2,] 7 3
[3,] 5 5
[4,] 4 6
[5,] 2 8
[6,] 5 5
[7,] 4 6
[8,] 4 6
[9,] 5 5
[10,] 3 7
[11,] 1 9
[12,] 3 7
[13,] 4 6
[14,] 5 5
[15,] 2 8
问题是,我写这段代码是为了得到它:
proportions10 <- t(sapply(1:200, binom10.2)
proportions10 <- t(replicate(200, binom10.2(i)))
我认为这两种方式都是一样的,但是,当同时运行它们时,我有时会得到所需的矩阵,有时会得到一个列表,如下所示:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,21] [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [,39] [,40]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,61] [,62] [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,71] [,72] [,73] [,74] [,75] [,76] [,77] [,78] [,79] [,80]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,81] [,82] [,83] [,84] [,85] [,86] [,87] [,88] [,89] [,90]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98] [,99] [,100]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,101] [,102] [,103] [,104] [,105] [,106] [,107] [,108] [,109] [,110]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,111] [,112] [,113] [,114] [,115] [,116] [,117] [,118] [,119] [,120]
对我来说,有时,根据我运行代码的次数,我得到第一个所需的矩阵,而在其他一些时候,我得到第二个列表,这毫无意义。无论我运行多少次代码,我都希望第一个矩阵始终出现......
有人可以帮忙吗?
【问题讨论】:
-
函数中的
i没有引用任何表达式。 -
尝试从标头
function()中删除 i,以便该函数不接受任何参数。然后使用t(replicate(200, binom10.2())) -
hmmm...我仍然得到同样的错误,消除了函数中的(i)我仍然得到第二个列表而不是所需的矩阵......并且在尝试多次运行代码时,我终于得到了想要的矩阵,但这就是让我发疯的原因,因为这不应该发生......我应该得到一个或另一个,但不能两者都取决于运行的随机代码
标签: r distribution replicate