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

R语言计算rolling median(滚动中位数)输出与预期不符求助

R语言滚动中位数代码问题排查与修正

存在的问题

  • R语言的向量、数据框索引默认从1开始,你初始设置i=0,向median_roll[0]赋值属于无效操作,第一次窗口计算的结果不会被存入结果向量,最终输出缺失首个值。
  • 循环终止条件设置不合理:原代码i < length(x)-n会少执行一次循环,导致缺失最后一个窗口的计算结果。
  • 初始化median_roll为字符型向量,会强制将数值型的中位数转为字符串存储,如有数值计算需求会存在类型问题。

修正后的代码

# 索引从1开始
i <- 1
x <- c(1:10)
n <- 2
y <- as.data.frame(x)
# 提前初始化固定长度的数值型结果向量
median_roll <- numeric(length(x) - n)
# 调整循环终止条件为<=
while(i <= length(x)-n){
  median_roll[i] <- median(y[i:i+n, ])
  i <- i + 1  
}

运行后输出median_roll即可得到预期结果:

[1] 2 3 4 5 6 7 8 9

如果需要输出为字符型,将初始化代码替换为median_roll <- character(length(x) - n)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:45:01