2017-07-26 38 views
1

我很抱歉一遍又一遍地重複這個問題,但似乎我對預測更廣泛的範圍瞭解不足。看起來,如果數據的nrow與預測值匹配得不錯,就沒有錯誤。但是,如果您想預測不同範圍我們將會收到錯誤消息。預測()在更廣的範圍

使用相同的數據,從dplyrdo-requires-named-function

它工作得很好。但是如果你想改變配件的範圍,我會收到一個錯誤!

library(dplyr) 
iris %>% 
    group_by(Species) %>% 
    do({ 
    mod <- lm(Sepal.Length ~ Sepal.Width, data = .) 
    pred <- predict(mod, newdata = data.frame(Sepal.Width=seq(1,10,length.out=51))) 
    data.frame(., pred) 
    }) 

在data.frame誤差(,預解碼值。): 參數意味着不同的行數:50,51

據我所知,新的範圍不匹配與以前的數據.。 OTH,我需要預測更大範圍的Sepal.Width值。這可能嗎 ?

回答

2

當您使用data.frame(.,pred)時,您嘗試將現有數據框與50行和新預測與51行綁定在一起。如果更換此線由data.frame(pred)一切正常:

# A tibble: 153 x 2 
# Groups: Species [3] 
    Species  pred 
    <fctr> <dbl> 
1 setosa 3.329491 
2 setosa 3.453779 
3 setosa 3.578067 
... 
+0

這很酷,但如果你想繪製的東西使用相同'.' data.frame它有'data.frame是有用的(,預計值) '。在其他情況下,我想我們需要從此建立另一個數據。例如,如果我想繪製'Sepal.Length_predicted' vs'pred',我需要構建新的'data.frame'。我對麼? – Alexander

+0

,這個'Sepal.Lenght_predicted'來自我們從'lm'得到的擬合係數。 – Alexander

+0

這是正確的.... –