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

如何将基于历史观测值标准化后的列合并到R数据框tg中?

解决方法

你的问题出在循环没有正确存储标准化结果:当前的for循环只是打印计算值,并没有把所有结果保存到向量a中,循环结束后a实际上是NULL,自然没法添加到数据框里。

步骤1:正确生成标准化结果向量

先初始化一个空向量,再在循环中逐个存入计算值(同时处理第一个观测标准差为0的特殊情况):

# 初始化和len长度一致的空向量
a <- numeric(nrow(tg))

for (i in 1:nrow(tg)) {
  # 取前i个观测的均值和标准差
  hist_mean <- mean(tg$len[1:i])
  hist_sd <- sd(tg$len[1:i])
  
  # 避免第一个观测sd=0导致的NaN,将其设为0
  a[i] <- if (hist_sd == 0) 0 else (tg$len[i] - hist_mean) / hist_sd
}

步骤2:将结果添加到数据框

直接用赋值语句把向量作为新列加入tg:

# 添加名为len_hist_standardized的新列
tg$len_hist_standardized <- a

# 查看结果
head(tg)

如果习惯用dplyr,也可以这样写:

library(dplyr)
tg <- tg %>% mutate(len_hist_standardized = a)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:55:01