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

如何将R语言中循环执行Kolmogorov-Smirnov检验的结果存储为数据框?

解决方案:将KS检验循环结果整理为数据框

我来帮你解决这个问题!要把循环执行的Kolmogorov-Smirnov检验结果整理成结构化的数据框,核心思路是在每次检验后提取关键信息(对比组名称、统计量D、p值),并逐步收集到一个空数据框中。下面是更鲁棒且清晰的实现方式:

步骤1:提取Trial列名(避免依赖列索引)

先从两个数据框中提取所有以Trial开头的列名,这样即使后续数据框的列数或顺序变化,代码也能正常运行:

# 获取Kurve1和Kurve2中的Trial列名
kurve1_trials <- colnames(Kurve1)[grepl("Trial", colnames(Kurve1))]
kurve2_trials <- colnames(Kurve2)[grepl("Trial", colnames(Kurve2))]

步骤2:创建空结果数据框

预先定义好结果数据框的列结构,方便后续填充内容:

# 创建空结果数据框
ks_results_df <- data.frame(
  Group1 = character(),  # Kurve1中的试验组
  Group2 = character(),  # Kurve2中的试验组
  D_statistic = numeric(),  # KS检验的D统计量
  p_value = numeric(),  # 检验的p值
  stringsAsFactors = FALSE
)

步骤3:循环执行KS检验并收集结果

遍历所有Trial列的两两组合,执行单侧(greater)KS检验,并把结果添加到数据框中:

# 双重循环执行检验并收集结果
for (g1 in kurve1_trials) {
  for (g2 in kurve2_trials) {
    # 执行KS检验
    ks_test <- ks.test(Kurve1[[g1]], Kurve2[[g2]], alternative = "greater")
    
    # 提取本次检验的关键信息
    result_row <- data.frame(
      Group1 = g1,
      Group2 = g2,
      D_statistic = ks_test$statistic,
      p_value = ks_test$p.value,
      stringsAsFactors = FALSE
    )
    
    # 将当前结果行添加到总数据框
    ks_results_df <- rbind(ks_results_df, result_row)
  }
}

可选:仅保留不重复的组合(上三角)

如果不需要所有两两组合(比如不想重复对比Trial.1-Trial.2和Trial.2-Trial.1),可以调整循环逻辑只保留上三角组合:

# 创建空数据框存储不重复的结果
ks_results_upper <- data.frame(
  Group1 = character(),
  Group2 = character(),
  D_statistic = numeric(),
  p_value = numeric(),
  stringsAsFactors = FALSE
)

for (i in seq_along(kurve1_trials)) {
  for (j in seq_along(kurve2_trials)) {
    # 仅保留i < j的组合,可根据需求改为i <= j
    if (i < j) {
      g1 <- kurve1_trials[i]
      g2 <- kurve2_trials[j]
      ks_test <- ks.test(Kurve1[[g1]], Kurve2[[g2]], alternative = "greater")
      
      result_row <- data.frame(
        Group1 = g1,
        Group2 = g2,
        D_statistic = ks_test$statistic,
        p_value = ks_test$p.value,
        stringsAsFactors = FALSE
      )
      
      ks_results_upper <- rbind(ks_results_upper, result_row)
    }
  }
}

运行完成后,ks_results_df(或ks_results_upper)就是你需要的结构化数据框,可以直接查看或后续分析使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:52:29