R 如何从给定概率矩阵的二项式分布中采样

R 如何从给定概率矩阵的二项式分布中采样,r,matrix,R,Matrix,我试图创建一个0、1和2的矩阵。让我们把这个数据集称为A,这样A[i,j]~二项式(2,P[i,j]),其中P是另一个矩阵,它给出了A中每个条目的概率。因此,矩阵A中的每个条目将根据其在矩阵P中对应的概率条目进行二元分布。下面给出了一个for循环,它说明了我想要的东西,但是在R中这真的很慢,所以我想如果有人知道我如何使用apply函数来实现它?P和A都是m*n矩阵 for (i in 1:m) { for (j in 1:n) { a[i,j] = rbinom(n = 1, siz

我试图创建一个0、1和2的矩阵。让我们把这个数据集称为A,这样
A[i,j]~二项式(2,P[i,j])
,其中
P
是另一个矩阵,它给出了
A
中每个条目的概率。因此,矩阵
A
中的每个条目将根据其在矩阵
P
中对应的概率条目进行二元分布。下面给出了一个for循环,它说明了我想要的东西,但是在R中这真的很慢,所以我想如果有人知道我如何使用
apply
函数来实现它?P和A都是m*n矩阵

for (i in 1:m) {
  for (j in 1:n) {
    a[i,j] = rbinom(n = 1, size = 2, prob = p[i,j])
  }
}

prow
prow如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易为您提供帮助。提供一个用于测试的样本
P
矩阵。如果您包含一个简单的样本输入和所需的输出,可以用于测试和验证可能的解决方案,那么就更容易为您提供帮助。提供用于测试的样本
P
矩阵。
prow <- 100
pcol <- 100
set.seed(1)
p <- matrix(runif(prow*pcol), ncol=pcol, nrow=prow)
diag(p) <- 0
a <- matrix(NA, ncol=pcol, nrow=prow)

a[] <- rbinom(n=prow*pcol, size=2, prob = p)

print(a[1:10,1:10])