2014-10-07 389 views
0

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

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

我真的找不到原因。

第二个问题 -

什么是[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) 

感谢。

+0

看看'T $ x'。 't $ x [,4]'是第四列,'t $ x'的所有行。更好的方法是说't $ x [,'p adj']',这样它在代码中更具可读性。这是非常基本的R,所以你应该在问这里之前阅读一些教程。另外,我猜你正在使用'multcompView'包,这也应该提到。你也没有包含'For.R'的数据,我想这只是'data.frame(x = x,y = y)'。 – nograpes 2014-10-07 21:12:58

回答

1

什么multcompLetters预计是一个值的矩阵,因为它预计不止一个比较。在你的数据中,你只有一个比较,yes vs no。如果你看看你的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 
+0

谢谢。它的工作原理是收到一封信。但不是在每个框的顶部添加一个字母。我很想阅读更多关于R的文章,但是我的论文在星期五早上有一个截止日期,所以它必须在那之后。 – Mathias 2014-10-08 12:26:04

+0

这段代码有诀窍。但是如果我有两个以上的类别,我只能让它工作。 – Mathias 2014-10-08 12:27:12

+0

y <-c(1,22,6,42,5,72,2,32,9,72,5,62,4,32,2,32,4,52,4,52,20,21, 22,23,24,23,21,21,23,21) x <-c(“否”,“是”,“否”,“是”,“否”,“是”,“否”, “是”,“否”,“是”, “否”,“是”,“否”,“是”,“否”,“是”,“否”,“是”,“否” “pos”,“pos”,“pos”,“pos”,“pos”,“pos”,“pos”) fit <-aov( (y),y(x),y​​ = x) #summary(fit) t < - TukeyHSD(aov(fit)) #t #names(t) boxplot(y_x,data = For.R,ylim = c )),xlab =“Some”,ylab =“Else”) tp < - extract_p(t) groups2 < - multcompLetters(t $ x [,4]) let < - groups2 $ Letters [c(3,1: 2)] groups2 让 文本(1:3,20,让) – Mathias 2014-10-08 12:30:53