R语言循环从正态分布采样随机数出现NULL值问题求助
R代码循环采样问题解决
问题原因
你的代码里for (i in 10)这个循环条件仅让i取到10这一个值,循环只执行了一次,仅给S[[10]]赋值,而S[[1]]到S[[9]]从未被处理,因此返回NULL。
修正后的代码
将循环范围改为1:10,让i依次遍历1到10的所有数值:
n <- 1000 Rnd <- rnorm(n,0,1) S <- list() for (i in 1:10) { S[[i]] <- sample(Rnd, 1, replace = TRUE) } # 查看结果 S
额外优化说明
- 无需将向量
Rnd转换为数据框R,直接使用sample(Rnd, 1)即可从正态分布生成的随机数中采样,代码更简洁高效。 - 若无需保留1000个随机数的集合,可直接在循环中调用
rnorm(1,0,1),每次生成一个新的正态随机数,省去提前生成批量数据的步骤:
S <- list() for (i in 1:10) { S[[i]] <- rnorm(1, 0, 1) }
内容的提问来源于stack exchange,提问作者absab
相关产品推荐
相关产品推荐

