You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言列表循环计算多项分布密度出现重复结果求助

问题分析与解决

你在计算sampled_geno列表中各元素的多项分布密度时,得到重复结果的原因是代码存在两处关键错误:

  • 多余的内层循环:你不需要遍历子列表的每个元素,只需针对整个子列表计算频数
  • 索引误用:sampled_geno[i]始终指向列表的第一个元素,而非当前外层循环的第l个元素

修正后的循环代码

multinoms <- list()
for (l in 1:length(sampled_geno)) {
  # 获取当前子列表
  current_data <- sampled_geno[[l]]
  # 生成频数统计表
  freq_table <- as.data.frame(table(current_data))
  # 提取频数与概率值
  counts <- freq_table$Freq
  probs <- counts / sum(counts)
  # 计算多项分布密度并存储
  multinoms[[l]] <- dmultinom(x = counts, prob = probs)
}

# 输出结果
multinoms

更高效的向量化实现

用lapply替代循环,代码更简洁且不易出错:

multinoms <- lapply(sampled_geno, function(data) {
  freq <- table(data)
  dmultinom(x = as.numeric(freq), prob = prop.table(freq))
})

内容的提问来源于stack exchange,提问作者monif064

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:22:48