R: найти исходный код, который производит вывод для слота S4?

Добрый день Всем,

Когда функция «lmer» в «lme4» запускается, она создает объект S4 с большим количеством слотов. Меня интересует один из этих слотов, а именно модель@X, и то, как создается вывод этого слота «X». Я хочу попытаться воспроизвести этот вывод для другой функции модели (glmmPQL), которую я использую, которая не создает автоматически этот вывод «X» (к вашему сведению, «lmer» создает объект класса «mer», а слот «X» — это модель матрица фиксированных эффектов). Код ниже показывает, о чем я говорю.

Что я хочу выяснить, так это то, как были получены эти данные «X»? Я посмотрел код «lmer», написав его в терминале без «()», но ничего там не нашел. Я также пробовал showMethod('lmer'), но он говорит, что функция 'lmer': .

Просто интересно, есть ли способ получить исходный код того, что конкретно делает слот «X» (или любой слот в объекте S4)? Или кто-нибудь знает, как это воспроизвести? Большое спасибо за вашу помощь и время.

    library(lme4)
    # here is a quick example of what I am looking at using the cake dataset in the 'lme4' package
    m <- lmer(cakeglmm<- lmer(angle ~ temp + recipe + (1| replicate), family = gaussian, data = cake)

    slotNames(m)
    head(m@X)

person Adam    schedule 17.01.2013    source источник
comment
Вы можете получить исходный код каждого пакета R, включая ядро, в CRAN.   -  person Carl Witthoft    schedule 17.01.2013


Ответы (1)


Вы начали хорошо, напечатав lmer. Это не покажет вам, где установлен m@X, но вы сможете увидеть, какие методы вызываются lmer.

Доступ к методам в lmer можно получить с помощью lme4:::methodName.

Если вы заглянете внутрь lme4:::lmer_finalize, то увидите (перефразируя):

ans <- new(Class = "mer", ..., X = fr$X, ...)

Вот где заполняется слот @X. Вернувшись в lmer, вы увидите, что fr происходит от lme4:::lmerFrames, и, в частности, fr$X рассчитывается следующим образом:

X <- if (!is.empty.model(mt)) 
    model.matrix(mt, mf, contrasts)
else matrix(, NROW(Y), 0)
person pete    schedule 20.05.2013