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

R语言for循环计算亲子身高均值返回全NA问题求助

问题分析与修正

你的代码出现全NA的原因有几个核心问题:

  • 循环范围错误:for (i in length(galton$parent))只会让i取到一个值(即数据集的总长度,比如928),不会遍历1到928的所有索引,导致只计算了最后一行的均值,前面的位置都是空值。
  • 向量初始化位置错误:g_mean<-c()放在循环内部,每次循环都会把之前的计算结果清空,最终只保留最后一次的计算(但因为范围错误,这一步也没起作用)。
  • 不必要的重复赋值与提前终止:g_mean<-c(g_mean,g_mean[i])会重复添加同一个值,而return(g_mean[i])会直接终止循环,导致循环只执行一次,且返回单个值,无法得到完整的均值向量。

修正后的代码

高效写法(推荐)

先初始化一个和目标长度一致的空数值向量,再逐个赋值:

# 初始化与parent长度相同的空向量
g_mean <- numeric(length(galton$parent))
# 遍历每个索引
for (i in seq_along(galton$parent)) {
  g_mean[i] <- (galton$parent[i] + galton$child[i]) / 2
}

逐步添加写法(符合你最初的思路)

如果习惯逐步构建向量,可以把初始化放在循环外,每次添加计算结果:

g_mean <- c()
for (i in seq_along(galton$parent)) {
  current_mean <- (galton$parent[i] + galton$child[i]) / 2
  g_mean <- c(g_mean, current_mean)
}

两种写法都能得到正确的父母与孩子身高均值向量,其中第一种因为提前分配了内存,运行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:01:28