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

Wilcoxon检验样本组自定义筛选对比的函数参数优化问询

这里给你调整代码,添加一个target_groups参数来实现仅分析指定分组的功能,同时做了鲁棒性优化,避免指定不存在的分组导致出错:

# 定义需要对比的列组合(也可以做成参数,让函数更灵活)
z <- c(2,3,4)
v <- 2
s <- sapply(z,'+',v)
combination <- mapply(c,z,s,SIMPLIFY = F)

# 定义Wilcoxon检验的核心逻辑函数
wilcox.fun <- function(dat) {
  do.call(rbind, lapply(combination, function(x) {
    test <- wilcox.test(dat[[x[1]]], dat[[x[2]]], paired=FALSE)
    data.frame(Test = sprintf('Col %s vs Col %s', x[1], x[2]), 
               W = round(test$statistic,4), 
               p = test$p.value)
  }))
}

# 封装成带指定分组参数的主函数
run_wilcox_by_group <- function(dat, target_groups = NULL) {
  # 处理目标分组:如果为NULL则使用所有分组,否则过滤出存在的有效分组
  all_groups <- unique(dat$group)
  if (!is.null(target_groups)) {
    # 检查指定分组是否存在,过滤掉不存在的分组
    valid_groups <- intersect(target_groups, all_groups)
    if (length(valid_groups) == 0) {
      stop("指定的分组在数据集中不存在,请检查输入!")
    }
    # 仅保留有效分组的数据
    dat_filtered <- dat[dat$group %in% valid_groups, ]
  } else {
    dat_filtered <- dat
  }
  
  # 按分组拆分数据并执行检验,最后合并结果
  result <- purrr::map_df(split(dat_filtered, dat_filtered$group), 
                          wilcox.fun, 
                          .id = 'Group')
  # 将Group列转为数值型(和你预期的输出格式一致)
  result$Group <- as.integer(result$Group)
  return(result)
}

# 示例用法:仅分析分组1和3
result <- run_wilcox_by_group(data, target_groups = c(1, 3))
print(result)

改动说明

  1. 新增target_groups参数:默认值为NULL,此时会自动处理数据中所有分组;如果传入指定的分组向量(比如c(1,3)),就只对这些分组执行检验。
  2. 有效性检查:如果你指定的分组在数据集中不存在,函数会抛出明确的错误提示,避免后续流程莫名报错。
  3. 输出格式对齐:把Group列转为数值型,和你给出的预期输出格式完全匹配。

示例输出结构

执行上述示例代码后,输出会是类似这样的结构:

Group           Test      W         p
1     1 Col 2 vs Col 4 28.0000 0.7972416
2     1 Col 3 vs Col 5 16.0000 0.1046143
3     1 Col 4 vs Col 6 24.0000 0.4098076
4     3 Col 2 vs Col 4 28.0000 0.8306189
5     3 Col 3 vs Col 5 22.0000 0.2678295
6     3 Col 4 vs Col 6 27.0000 0.6899648

如果你想让列对比组合也更灵活,可以把combination也做成run_wilcox_by_group的参数,这样调用时可以随时传入不同的列对,不用修改核心函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:22:46