2

该软件包对于在图表ggsignif中快速轻松地指示重要比较非常有用。ggplot但是,该comparisons调用需要手动键入要比较的每对值。

例如。

library(ggplot2)
library(ggsignif)

data(iris)

ggplot(iris, aes(x=Species, y=Sepal.Length)) + 
  geom_boxplot() +
  geom_signif(comparisons = list(c("versicolor", "virginica"),c('versicolor','setosa')), 
              map_signif_level=TRUE)

在此处输入图像描述

我想知道如何通过一次引用所有可能的组合来规避这种情况?例如,expand.grid(x = levels(iris$Species), y = levels(iris$Species)), 给出所有组合

           x          y
1     setosa     setosa
2 versicolor     setosa
3  virginica     setosa
4     setosa versicolor
5 versicolor versicolor
6  virginica versicolor
7     setosa  virginica
8 versicolor  virginica
9  virginica  virginica

但是如何让这个被接受geom_signif(comparisons=...呢?

包信息可在此处获得https://cran.r-project.org/web/packages/ggsignif/index.html

4

1 回答 1

1

基于 Adam Quek 的评论,您只需要转置创建的矩阵并将每一行变成一个列表:

split(t(combn(levels(iris$Species), 2)), seq(nrow(t(combn(levels(iris$Species), 2)))))

$`1`
[1] "setosa"     "versicolor"

$`2`
[1] "setosa"    "virginica"

$`3`
[1] "versicolor" "virginica" 

ggplot(iris, aes(x = Species, y = Sepal.Length)) + 
  geom_boxplot() +
  geom_signif(comparisons = split(t(combn(levels(iris$Species), 2)), seq(nrow(t(combn(levels(iris$Species), 2))))), 
              map_signif_level = TRUE)

在此处输入图像描述

于 2017-05-16T06:29:35.450 回答