predic.lm ожидает фрейм данных, который содержит (по крайней мере) все столбцы с теми же именами, что и фрейм данных, используемый для обучения, даже если есть только одна переменная-предиктор.
Пример со встроенным набором данных mtcars :
fit <- lm(mpg ~ disp, mtcars)
x <- seq(min(mtcars$disp), max(mtcars$disp), by=5)
y <- predict.lm(fit, data.frame(disp=x))