2013-01-17 55 views
1

G'day Everyone,R:找到產生S4插槽輸出的源代碼?

'lme4'中的'lmer'函數運行時,會生成一個帶有很多插槽的S4對象。我對這些插槽之一感興趣,即model @ X,以及如何生成此'X'插槽輸出。我想嘗試重現此輸出爲一個不同的模型函數(glmmPQL),我使用它不會自動生成此'X'輸出(FYI'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([email protected]) 
+0

你可以得到源代碼,每個 - [R包,包括核心,在CRAN。 –

回答

1

你開始打印好吧lmer。這不會告訴你在哪裏設置了[email protected],但你可以看到lmer調用了哪些方法。

lmer中的方法可以使用lme4:::methodName訪問。

如果你看裏面0​​,你會看到(意譯):

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)