Проблема, как оказалось, заключалась в моем особом способе индексации групп.ranef (lme) возвращает фрейм данных, где имена строк являются именами групп.В моих данных я использовал очень длинное число, чтобы различать группы, которые R округлились до нескольких десятичных разрядов.Это означало, что невозможно точно указать отдельные группы по имени.
Я решил проблему путем преобразования каждого индекса в число base-62.Я использовал цифры и строчные и прописные буквы в качестве набора символов в числе.(То есть совпадающее число [a-zA-Z0-9] *) Это значительно уменьшило длину имени группы и лишило возможности R округлять имя группы - чем больше символов вы используете, тем короче становится.
Теперь, если я это сделаю:
M3.ranef <- ranef(M3)
x <- M3.ranef[group_ID,1]
x - это случайный эффект для группы с именем group_ID, как и должны работать фреймы данных.