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

RStudio中两列数据多组滚动窗口t检验的高效实现方法问询

实现方案

你可以通过迭代的方式批量完成所有窗口检验,无需手动重复编写代码,以下是两种常用的R实现方案:

  • 方案1:lapply迭代(推荐,代码更简洁,结果自动存储为列表)
    先定义窗口参数,再批量执行检验,所有结果会按窗口顺序存在列表中,第k个元素对应第k次(第k到k+9行)的检验结果:
# 定义窗口参数
window_size <- 10
total_times <- nrow(strip9) - window_size + 1 # 自动计算总检验次数,数据行数变化时也适用

# 批量执行检验
modified_p_list <- lapply(1:total_times, function(k) {
  idx <- k:(k + window_size - 1)
  RC_win <- RC9[idx]
  RM_win <- RM9[idx]
  coord_win <- data.frame(
    easting = strip9$xcoord[idx],
    northing = strip9$ycoord[idx]
  )
  return(modified.ttest(RC_win, RM_win, coord_win))
})

如果需要提取所有检验的p值或其他统计量,直接遍历列表取值即可,示例如下(需根据modified.ttest实际返回的字段名调整):

# 提取所有检验的p值
all_p <- sapply(modified_p_list, function(res) res$p.value)
  • 方案2:for循环实现(适合需要输出中间过程的场景)
    提前初始化列表存储结果,运行效率更高:
window_size <- 10
total_times <- nrow(strip9) - window_size + 1
# 提前初始化列表,避免运行中动态扩容拖慢速度
modified_p_list <- vector("list", total_times)

for (k in 1:total_times) {
  idx <- k:(k + window_size - 1)
  RC_win <- RC9[idx]
  RM_win <- RM9[idx]
  coord_win <- data.frame(
    easting = strip9$xcoord[idx],
    northing = strip9$ycoord[idx]
  )
  modified_p_list[[k]] <- modified.ttest(RC_win, RM_win, coord_win)
}

如果后续需要把所有检验结果合并为统一的数据框,可以用dplyr::bind_rows或者data.table::rbindlist批量处理列表结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:15:01