与geom_signif函数R的多重比较

与geom_signif函数R的多重比较,r,graph,ggplot2,statistics,pairwise,R,Graph,Ggplot2,Statistics,Pairwise,包ggsignif非常有用,可以快速方便地指示ggplot图形中的重要比较。但是,比较调用需要手动键入要比较的每对值 例如 library(ggplot2) library(ggsignif) data(iris) ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot() + geom_signif(comparisons = list(c("versicolor", "virginica"),c('versicol

ggsignif
非常有用,可以快速方便地指示
ggplot
图形中的重要比较。但是,
比较
调用需要手动键入要比较的每对值

例如

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(比较=…)接受这一点呢


包信息可在此处找到

基于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)

combn(级别(虹膜$Species),2)
将为您提供所有三对combinations@AdamQuek如果不使用
list()
则会出现错误,
警告消息:stat\u signif()中的计算失败:没有足够的“y”观察值
。与
list()一起使用
仅将第一次比较添加到绘图中。不回答您对
几何符号的查询(从未使用过,也不打算使用)。只是建议
combn
是获得成对组合的更明智的方法,而不是
expand.grid
@AdamQuek噢。好的,谢谢。太好了!谢谢。我可以麻烦你问一下如何避开或抖动这些行吗?啊,我明白了
步骤增加=