如何让R语言循环包含0值以生成完整的泊松估计向量?
解决方法
问题根源在于R的向量索引规则:R中向量的索引从1开始,当你用vec[val]且val=0时,这个索引无效,导致val=0的计算结果根本没被存入vec。
有两种简单的修复方式:
方式1:调整循环中的索引
先初始化一个长度和x一致的空向量,用val + 1作为索引(x从0开始,val+1正好对应1到23的有效索引):
x <- seq(0,22) vec <- numeric(length(x)) # 初始化空向量,长度与x匹配 for (val in x) { vec[val + 1] <- dpois(val, 6.298387) * 124 }
这样val=0会对应vec[1],所有值都能被正确存入。
方式2:用向量化操作替代循环(更推荐)
R的统计函数天生支持向量输入,完全不需要写循环,直接一步到位:
x <- seq(0,22) vec <- dpois(x, 6.298387) * 124
这种写法简洁高效,还从根源上避免了索引错误的问题。
内容的提问来源于stack exchange,提问作者Francisco
相关产品推荐
相关产品推荐

