r - 使用multcompLetters添加连接字母

时间:2014-10-07 20:44:22

标签: r

我希望有人有2分钟时间向我解释两件事。我有这个代码,我在一个非常大的数据集上运行。它使用multcompLetters为我的箱形图添加连接字母。我有4个治疗和2个基因型的实验设置,所以我的aov就像y~Treat + Geno + Geno:治疗。 当我使用处理(3df)或交互(7df)运行代码时,它似乎始终工作得很好。当我在Geno上运行它(这里是x)时,我得到一个错误。

Error in multcompLetters(t$x[, 1]) : Names required for t$x[, 1]

我真的无法找到原因。

第二个问题 -

[,4]在

中意味着什么
groups2 <- multcompLetters(t$x[,4])

...

代码模型为你做了:

#RGR ~ Geno boxplot
y<-c(1,2,6,4,5,7,2,3,9,7,5,6,4,3,2,3,4,5,4,5)
x<-c("no","yes","no","yes","no","yes","no","yes","no","yes",
 "no","yes","no","yes","no","yes","no","yes","no","yes")
fit <- aov(y~x)
summary(fit)
 t <- TukeyHSD(aov(fit))
 t
names(t)
boxplot(y~x, data=For.R, ylim=c(0,10),xlab="Some", ylab="Else")
 tp <- extract_p(t)
 tp
 groups2 <- multcompLetters(t$x[,4])
 lets <- groups2$Letters[c(4,1:3)]
 text(1:4, 95 ,lets)

感谢。

1 个答案:

答案 0 :(得分:1)

multcompLetters期望的是一个值矩阵,因为预计会有多个比较。在您的数据中,您只需进行一次比较,yesno。如果您查看t$x变量,可以看到此矩阵:

t$x
#        diff       lwr      upr    p adj
# yes-no  0.3 -1.631884 2.231884 0.747998

通常,这里会有很多行。不幸的是,当您从此矩阵中仅选择一行时,所有行名称都将被删除,multcompLetters需要名称。例如:

t$x[,4]
# [1] 0.747998 # No names.

要防止这种情况,您必须在子选择中添加一个参数:

t$x[,4,drop=FALSE] 
#           p adj
# yes-no 0.747998 # Names intact

multcompLetters(t$x[,4,drop=FALSE]) # Works.
# $Letters
# yes-no 
#    "a" 
# 
# $LetterMatrix
#           a
# yes-no TRUE