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
相关产品推荐
相关产品推荐

