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

R语言:用函数生成值列表绘制直方图时出现NA值问题求助

问题分析与解决

问题出在未预先初始化zscores向量的长度。在R中,直接对未定义的向量使用索引赋值时,R会动态扩展向量,但这个过程容易受已有环境变量影响(比如你之前可能定义过长度不符的zscores),导致循环中大部分位置无法正确赋值,最终出现大量NA。

修正方案1:预先初始化向量 + 循环

先创建一个长度为1000的空数值向量,再循环赋值:

zscores <- numeric(1000)
for (i in 1:1000) {
  zscores[i] <- sum(runif(12)) - 6 # sum比Reduce("+", ...)更简洁高效
}
hist(zscores)

修正方案2:用向量化操作替代循环(推荐)

R更适合向量化编程,用replicate可以直接生成目标向量,无需手动循环:

zscores <- replicate(1000, sum(runif(12)) - 6)
hist(zscores)

解释:

  • numeric(1000)会生成一个长度为1000、初始值为0的向量,循环时直接覆盖对应位置,避免NA产生。
  • sum(runif(12))和你原来的Reduce("+", runif(12))功能完全一致,但写法更直观。
  • replicate函数会重复执行括号内的表达式指定次数(这里是1000次),直接返回结果向量,代码更简洁且效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:43:23