Predict() 范围更广

Predict() in wider range

我很抱歉一遍又一遍地重复这个问题,但我似乎对预测更大范围的理解很差。似乎如果数据的 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(., pred) 错误: 参数表示不同的行数:50、51

我了解到新范围与之前的数据不匹配.。 OTH,我需要预测更大范围的 Sepal.Width 值。这可能吗 ?

当您使用 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
 ...