R语言生成负二项分布向量列表时元素长度递增问题咨询
解决负二项分布模拟列表的长度问题
嘿,问题根源就在你代码里的rep()函数!你用了times = i参数,这会把每次生成的1000个负二项分布值重复i次,所以第i个列表元素的长度就变成了1000*i,完全偏离了你的需求。
要让每个列表元素都是长度固定为1000的向量,只需要去掉多余的rep()调用就行,直接在循环里生成1000个值:
test <- list() for(i in 1:100) { test[[i]] <- rnbinom(n=1000, size=36, prob=0.4) }
另外,在R里处理这种“生成多个同结构元素的列表”场景,用lapply()会更简洁高效,不需要手动初始化列表和写循环:
test <- lapply(1:100, function(x) { rnbinom(n=1000, size=36, prob=0.4) })
验证结果
你可以用下面的代码检查每个列表元素的长度,确认都是1000:
sapply(test, length)
运行后会返回一个包含100个1000的向量,说明每个元素都符合要求啦。
内容的提问来源于stack exchange,提问作者João Carvalho
相关产品推荐
相关产品推荐

