我构建了一个线性混合模型来分析我的数据,并使用了包multcomp
进行成对比较。我已经创建了一个具有模型输出的GGPLOT,我想将cld()
输出(字母)放在bars 。
,但我不知道如何从cld()
输出中提取字母。它是10个列表,包含许多对象和向量,坦率地说,我不完全了解其中的一半(此外,我对列表的经验很少,尽管我读了几次,并且进行了许多基本练习,但我仍然发现很难掌握)。
当您在R中运行cld()
时,它会在控制台中向您显示所需的内容,这就是我要提取的内容。到目前为止,我的互联网搜索还没有产生任何解决方案。
代码
# packages
library(lme4)
library(multcomp)
library(ggplot2)
# dummy dataset
treatment <- c(rep("X",4),rep("Y",4),rep("Z",4))
replicate <- rep(c("A","B","C","D"),3)
Y <- c(18.853,20.165,20.120,21.000,18.772,19.825,20.874,19.001,22.007,21.875,21.235,21.904)
data <- data.frame(treatment,replicate,Y)
# model
lm1 <- lmer(Y ~ treatment + (1|replicate), data=data)
drop1(lm1, test="Chisq")
# pairwise comparison
pc1 <- glht(lm1, mcp(treatment = "Tukey"))
summary(pc1)
cld(pc1, level=0.05) # how to extract this result?
# parameter estimates
lm1.e <- lmer(Y ~ treatment -1 + (1|replicate), data=data)
# plotfile
pfile <- data.frame(treatment=c("X","Y","Z"))
pfile$Y <- fixef(lm1.e)
pfile$SE <- summary(lm1.e)$coefficients[,2]
pfile$minSE <- pfile$Y-pfile$SE
pfile$maxSE <- pfile$Y+pfile$SE
# plot
ggplot(pfile, aes(treatment, Y)) + # how to add cld() result above bars?
xlab("Treatment") +
ylab(expression(paste("Y (g)", sep=""))) +
geom_col(position = "dodge", color="black", fill="white") +
geom_errorbar(aes(ymin=minSE, ymax=maxSE), width=.2, position=position_dodge(0.9))
使用multcomp:::print.cld
,您可以看到代码,您将在其中看到它基本上调用:print(x$mcletters$Letters)