2014-10-07 4 views
0

Надеюсь, есть кто-то, у кого есть 2 минуты, чтобы объяснить мне 2 вещи. У меня есть этот код, который я запускаю на довольно большом наборе данных. Его использование multcompLetters для добавления соединительных писем в мои ящики. У меня есть экспериментальная установка с 4 обработками и 2 генотипами, поэтому мой аов похож на y ~ Treat + Geno + Geno: Treat. Когда я запускаю код с обработкой (3df) или взаимодействием (7df), он все время работает нормально. Когда я запускаю его на Geno (здесь x), я получаю сообщение об ошибке.r - использование multcompLetters для добавления соединительных букв

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) 

Спасибо.

+0

Посмотрите на 'т $ x'. Что 't $ x [, 4]' принимает четвертый столбец, все строки 't $ x'. Лучше было бы сказать 't $ x [, 'p adj']', поэтому он более читаем в коде. Это довольно простой R, поэтому вы, вероятно, должны прочитать некоторые уроки, прежде чем спрашивать здесь. Кроме того, я предполагаю, что вы используете пакет 'multcompView', который также следует упомянуть. Вы также не смогли включить данные для 'For.R', которые, я думаю, являются просто' data.frame (x = x, y = y) '. – nograpes

ответ

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

+0

Этот код делает трюк. Но я могу только заставить его работать, если у меня более двух категорий. – Mathias

+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 "," pos "," pos "," pos ") fit <- aov (у ~ х) #summary (подходят) т <- TukeyHSD (AOV (подходит)) #T #names (т) boxplot (у ~ х, данные = For.R, ylim = с (0,70), xlab = "Some", ylab = "Else") tp <- extract_p (t) groups2 <- multcompLetters (t $ x [, 4]) позволяет <- groups2 $ Буквы [c (3,1: 2)] groups2 позволяет текст (1: 3, 20, позволяет) – Mathias

Смежные вопросы