Я пытаюсь добиться следующего.У меня есть список фреймов данных в виде:
list1 <- list(d1=data.frame(name=rep("d1",3), A=c(1,2,3), B=c(2,4,5)),
d2=data.frame(name=rep("d2",3), A=c(1,2,3), B=c(2,4,5)),
d3=data.frame(name=rep("d3",3), A=c(1,2,3), B=c(2,4,5)))
Для каждого фрейма данных в list1
я хочу разместить линейную модель, а затем использовать эту модель для predict()
.Значения, используемые для прогнозов, находятся в отдельном кадре данных:
new.values <- data.frame(name=c("d1","d2","d3"), B=c(3,4,5))
Каждая модель должна использоваться только с одним значением из new.values
, с соответствующим именем (например, для list$d1
значение вnew.values[new.values$name == d1, ]
), не для всех значений в new.values$B
Я пробовал это:
predictions <- lapply(list1, function(x) predict(lm(A~B, data=x), new.values[new.values$name == names(x),], interval="predict"))
Но прогнозы остаются пустыми:
> predictions
$d1
fit lwr upr
$d2
fit lwr upr
$d3
fit lwr upr
Я думаю, потому что R не находит никаких значений дляпредсказать.Если я запускаю
predictions <- lapply(list1, function(x) predict(lm(A~B, data=x), new.values, interval="predict"))
, все значения в new.values
будут использоваться для каждой модели.
Как я могу это исправить?