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

如何循环执行聚类与逻辑回归代码10次并保留所有迭代结果

解决方法

先初始化一个空数据框用于存储所有迭代结果,再将原有聚类、OR计算逻辑包裹在10次循环中,每次迭代后为结果添加迭代编号并追加到总数据框里。修改后的完整代码如下:

# 初始化空数据框,用于累计所有迭代的结果
all_individual_ors <- data.frame()

# 循环执行10次
for (iter in 1:10) {
  # K-means聚类步骤
  cluster_algo <- kmeans(covariate_matrix, centers = 3)
  
  cluster_label_assignments <- as.data.frame(cluster_algo$cluster)
  colnames(cluster_label_assignments) <- "cluster_label_assignments"
  cluster_label_assignments$id <- covariate_matrix$id
  
  cluster_labels <- unique(cluster_label_assignments[["cluster_label_assignments"]])
  
  # 计算每个聚类的OR值
  cluster_odds_ratios <- vector("numeric", length(cluster_labels))
  for (c in seq_along(cluster_labels)) {
    within_label_individuals <- cluster_label_assignments %>%
      filter(cluster_label_assignments == cluster_labels[c])
    or_calc_df <- covariate_matrix %>%
      filter(id %in% within_label_individuals[["id"]])
    cluster_fit <- glm(Disease ~ Exposure, data = or_calc_df, family = "binomial")
    cluster_or <- exp(coef(cluster_fit))
    cluster_odds_ratios[[c]] <- round(cluster_or[2], 4)
  }
  
  # 将OR值与聚类标签关联
  cluster_odds_ratios_df <- data.frame(
    cluster_label_assignments = cluster_labels, 
    or = cluster_odds_ratios
  )
  
  # 关联个体与对应聚类的OR值(修正原代码merge参数错误)
  individual_ors <- merge(
    cluster_label_assignments,
    cluster_odds_ratios_df,
    by = "cluster_label_assignments",
    how = "inner"
  )
  
  # 添加迭代编号,区分不同次的计算结果
  individual_ors$iteration <- iter
  
  # 将当前迭代结果追加到总数据框
  all_individual_ors <- rbind(all_individual_ors, individual_ors)
}

# 查看最终汇总结果
head(all_individual_ors)

关键修改说明

  • 初始化总存储容器:提前创建all_individual_ors空数据框,避免每次迭代覆盖之前的结果。
  • 循环包裹核心逻辑:把聚类、OR计算、个体关联的代码放入10次循环中,重复执行目标流程。
  • 添加迭代标识:为每次迭代的结果增加iteration列,方便后续区分不同轮次的聚类分组和OR值。
  • 修正merge参数:原代码中merge使用的on参数是错误的,R语言中正确参数为by,否则会触发报错。
  • 追加结果到总数据框:用rbind将单次迭代的结果合并到总数据框,实现所有迭代数据的留存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:23:10