如何在R语言中为矩阵内二项式结果应用rtpois分布?
解决R语言矩阵替换问题
步骤说明
- 定位矩阵A中所有值为1的元素位置
- 从分布B中提取对应数量的元素,替换到这些位置
完整代码实现
首先确保依赖包已安装加载:
# 安装extraDistr包(首次使用时执行) install.packages("extraDistr") library(extraDistr)
生成原始矩阵和目标分布:
prevalence <- 0.01 A <- sapply(1:10, function(p) rbinom(50, 1, prevalence)) B <- extraDistr::rtpois(35000, 1.93, 1, 8)
执行替换操作:
# 获取A中所有1的位置索引 one_positions <- which(A == 1) # 从B中随机抽取对应数量的数值(若无需随机,直接取前N个用B[1:length(one_positions)]) replace_vals <- sample(B, length(one_positions)) # 完成替换 A[one_positions] <- replace_vals
补充说明
which(A == 1)返回矩阵A中所有1元素的线性索引,可直接用于定位修改位置- 替换完成后,矩阵A中原有0元素保持不变,所有1元素被替换为rtpois分布生成的数值
内容的提问来源于stack exchange,提问作者Katy Baker
相关产品推荐
相关产品推荐

