我有一个n×n矩阵,其中的值在[0,1]之间,并且每列都有相同的值.
这些值表示矩阵的每个元素取值True或False的概率.
我正在寻找一种快速的方法,基于每个元素的独立随机样本,将具有概率的矩阵转换为具有真/假值的矩阵.
目前,此代码生成我想要的内容(Tf_Matrix):
n <- 10
p_true <- runif(n,0,1)
p_matrix <- matrix(p_true,n,n, byrow=T)
tf_matrix <- matrix(F, n,n)
for(i in 1:nrow(tf_matrix)) {
for(j in 1:ncol(tf_matrix)) {
tf_matrix[i,j] <- sample(c(T,F), size = 1, prob = c(p_matrix[i,j], 1-p_matrix[i,j]))
}
}
然而,这可能非常慢,因为它使用两个for循环,并且我需要为大型矩阵一遍又一遍地做这件事.
有没有办法让这件事更有效率(也就是尽可能快)?