首页 > 解决方案 > 如何在 R 中自动创建一个向量,其中包含要与 stat_signif 包进行比较的所有组?

问题描述

所以问题是,我在 R 中用 ggplot2 制作了一些箱线图。我正在使用包 stat_signif 来显示配对比较。为此,我必须创建一个向量列表,以便与组进行比较。如果我有 2 组数据很好:

 ggplot(data=data, aes(x=group,y= value, fill=group)) +
      geom_boxplot() + 
      stat_signif(comparisons = list(c(names[1], names[2]))

当我有很多组时,问题就来了。例如,对于 4 个组,向量列表 (d) 如下所示:

 d <- list(c(names[1],names[3]), c(names[2], names[4]), c(names[1], names[2]), c(names[3], names[4]))

 ggplot(data=data, aes(x=group,y= value, fill=group)) +
      geom_boxplot() + 
      stat_signif(comparisons = d)

有没有办法自动创建一个包含所有可能组合的向量列表,而不是手动写入?

太感谢了!

标签: r

解决方案


您可以combn在组上使用以获取大小为 2 的所有组合。然后将其传递给stat_signif. 例如:

library(ggplot2)
library(ggsignif)

pairs <- combn(as.character(unique(iris$Species)), 2, simplify = FALSE)

ggplot(data = iris, aes(x = Species, y = Sepal.Width, fill = Species)) +
  geom_boxplot() +
  stat_signif(comparisons = pairs)           

推荐阅读