Я столкнулся с проблемой, пытаясь встроить lmer
в функцию. Вот воспроизводимый пример с использованием данных из lexdec
. Если я запускаю lmer
напрямую во фрейме данных, проблем не возникает. Например, предположим, что я хочу узнать, различалось ли время чтения в задаче на лексическое решение в зависимости от пробной. Было 2 типа словесных стимулов: «животное» (например, «собака») и «растение» (например, «вишня»). Я могу вычислить модель смешанных эффектов для слов животных:
library(languageR) #load lexdec data
library(lme4) #load lmer()
s <- summary(lmer(RT ~ Trial + (1|Subject) + (1|Word), data = lexdec[lexdec$Class== "animal", ]))
s #this works well
Однако, если я встрою модель lmer в функцию (скажем, чтобы не вводить одну и ту же команду для каждого уровня класса), я получаю сообщение об ошибке. Знаете почему? Мы будем очень признательны за любые предложения!
#lmer() is now embedded in a function
compute.lmer <- function(df,class) {
m <- lmer(RT ~ Trial + (1|Subject) + (1|Word),data = df[df$Class== class, ])
m <- summary(m)
return(m)
}
#Now I can use this function to iterate over the 2 levels of the **Class** factor
for (c in levels(lexdec$Class)){
s <- compute.lmer(lexdec,c)
print(c)
print(s)
}
#But this gives an error message
Error in `colnames<-`(`*tmp*`, value = c("Estimate", "Std. Error", "df", :
length of 'dimnames' [2] not equal to array extent