2013-02-28 110 views
0

我試圖通過使用nlme軟件包中的lmList()來生成不同級別的因子。雖然它從幫助頁面的例子工作,我的數據返回以下錯誤:lmList繪圖錯誤:未找到對象'cF'

library(nlme) 
##dataframe used (simplified): 
    **data.1** 
    IDf x.var.1 y.var.1 
1 1  1 1.856491 
2 1  2 2.999224 
3 1  3 3.943896 
4 1  4 4.903249 
5 1  5 6.034319 
6 2  6 6.986847 
7 2  7 8.024806 
8 2  8 9.139255 
9 2  9 9.986437 
10 2  10 10.760508 

##creating the lmlist file fm1 
fm2 <- lmList(y.var.1 ~ x.var.1 | IDf, data.1, na.action = na.exclude) 

##plotting fm2 
Call: 
    Model: y.var.1 ~ x.var.1 | IDf 
     Data: data.1 
Coefficients: 
(Intercept) x.var.1 
1 0.8695317 1.0259681 
2 1.3724091 0.9508952 

Degrees of freedom: 10 total; 6 residual 
Residual standard error: 0.1042786 

##plotting boxplots ##(or any kinds of plots really) 
> plot(fm2, IDf ~ resid(.)) 

##returning error: 
Error in plot.lmList(fm2, IDf ~ resid(.)) : object 'cF' not found 

現在我已經搜查,搜查,但我不能似乎找出這個對象'cF'應該意思是,任何幫助將不勝感激!

##EDIT: 
> dput(data.1) 
structure(list(IDf = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2), x.var.1 = 1:10, 
y.var.1 = c(1.85649137285461, 2.99922390104585, 3.94389558063648, 
4.90324945760581, 6.03431888678115, 6.98684730318977, 8.0248061251629, 
9.13925481513909, 9.98643662828079, 10.7605079666861)), .Names = c("IDf", 
"x.var.1", "y.var.1"), row.names = c(NA, -10L), class = "data.frame") 
+0

您可以發佈'dput(data.1)的結果',使這個重現? – 2013-02-28 16:25:30

回答

1

試試這個:

library(nlme) 
fm2 <- lmList(y.var.1 ~ x.var.1 | IDf, data.1, na.action = na.exclude) 
lapply(fm2 , function(lmob) plot(lmob$model$x.var.1, lmob$residuals)) 

在NLME的lmList功能:: lmList不返回S4對象,但編號的條目(對應於「國防軍」的數字更傳統的列表。

早些時候的意見和代碼爲(位)的脫靶,因爲lmList在NLME比lme4 :: lmList很大的不同:

我正在猜測,在p你正在使用的包裝 lmList是lme4。 我無法在lme4中找到plot.lmList的幫助頁面,但我確實看到該函數存在。我希望能夠找到是否有文件支持這種形式:陰謀(lmList-object,公式)。使用showMethods我發現應該有這樣的支持。

showMethods("plot") 
#------- 
Function: plot (package graphics) 
...snipped 
x="lmList.confint", y="ANY" 
x="lmList", y="formula" 
    (inherited from: x="ANY", y="ANY") 
...snipped... 

我不知道這是怎麼可能是一個函數調用resid將在RHS工作,或者如何有可能的是,分組參數將在LHS工作。最後,我無法讓plot.lmList工作。我所做的去工作是這個技巧:

lapply([email protected], function(lmob) plot(seq_along(lmob$residuals), lmob$residuals)) 

我也得到了這個工作:

lapply([email protected], function(lmob) plot(lmob$model$x.var.1, lmob$residuals)) 
+0

我可以用'nlme :: lmList'來重現這個問題,'?plot.lmList'也記錄在那裏。 – 2013-02-28 17:33:41

+0

@DWin我實際上是在使用nlme軟件包(就像我在第一句中寫的那樣),但是在我安裝了lme4軟件包並執行了代碼後,它一切正常!非常非常感謝你! – Joeri 2013-02-28 17:57:25

+0

@DWin On second thought .. :)現在我已經嘗試在我的真實數據上使用你的代碼,只返回兩個盒圖,沒有ID級別那麼多..任何想法如何可以? 對不起,在這裏成爲一個新手! – Joeri 2013-02-28 18:17:05

相關問題