2014-07-23 18 views
2

using predict with a list of lm() objects中,@JD龍要求解決我經常遇到的問題;通常情況下,當模型已經合適並且要生產地塊時會出現這種情況。在@Joshua Ulrich的回答中編輯的JD Long解決方案非常優雅,除了需要的paste之外。用列表預測 - 重訪

@hadley,ddply帝國的負責人,發表了一個解決方案mdply,我發現這個解決方案讓人難以理解,而且遠非優雅。

現在dplyr(可能tidyr)正在接管:是否有一種更直觀的方式來處理這個普通的工作?

有關數據和示例代碼,請參閱上面引用的JD Long的示例。

+1

你認爲'nlme :: lmList'?它在公式中使用了一個分組變量,在我看來這是一個非常直觀的界面。 – baptiste

+0

+1 @baptiste。對於那些有興趣的人,[這裏是一個很好的演示](http://stackoverflow.com/a/24907275/980833)簡單的'lmList()'和'predict.lmList()'做這個工作。 –

+0

是的,我是一個沉重的nlme用戶,predict.lmList是後臺的示例應用程序。但是在約書亞的問題中,姆僅僅是一個例子,並且是對其他適合的概括,例如從斯坦/ mcmc是我正在尋找。 –

回答

1

使用引用的question中的數據,可以對dplyr使用以下方法。

library(dplyr) 
newData %>% 
     group_by(state) %>% 
     mutate(pred = predict(modelList[[as.character(state[1])]], 
          as.data.frame(year))) 

但是,我不確定此解決方案是否比現有解決方案更優雅。

+0

這將作爲一個公認的答案,如果沒有更好的答案。在我看來,兩個演員表明這個解決方案並不是很優雅, as.character(狀態[1])(或粘貼在原始版本中)有點代碼味道。 –