我有一个初始化3个向量的for循环(launch_2012,amount和one_week_bf)并创建一个数据框。然后,它预测一周的数据并将其插入到向量(amount和one_week_bf)中,并再次重新创建data.frame;这个过程循环8次。但是,我似乎无法获取data.frame来更新新的金额。有人能帮忙吗?
for (i in 1:8) {
launch_2012 <- c(rep('bf', 5), 'launch', rep('af', 7))
amount <- c(7946, 6641, 5975, 5378, 5217, NA, NA, NA, NA, NA, NA, NA, NA)
one_week_bf <- c(NA, 7946, 6641, 5975, 5378, 5217, NA, NA, NA, NA, NA, NA, NA)
newdata <- data.frame(amount = amount, one_week_bf = one_week_bf, launch = launch_2012, week = week)
predicted <- predict(model0a, newdata)
amount[i+5] <- predicted[i+5]
one_week_bf[i+6] <- predicted[i+5]
View(newdata)
}
答案 0 :(得分:0)
由于您的示例不可重现,因此很难确定,但请注意predict.lm(...)
默认情况下为na.action=na.pass
,这意味着newdata
中任意NA的所有行值默认情况下为预测生成NA
。由于您{6}行第一次传递newdata
NA
,predicted
在这些相同的元素中会有NA
。这意味着amounts
和one_week_bf
在这些元素中会有NA
,而每次都会产生相同的newdata
。
答案 1 :(得分:0)
这些都不应该在for循环中。
x <- data.frame("launch_2012" = c(rep('bf', 5), 'launch', rep('af', 7)),
"amount"=c(7946, 6641, 5975, 5378, 5217, NA, NA, NA, NA, NA, NA, NA, NA),
"one_week_bf"=c(NA, 7946, 6641, 5975, 5378, 5217, NA, NA, NA, NA, NA, NA, NA))
x$new_amount <- #the replacement from your predict vector
x$new_one_week_bf <- #the replacement from your predict vector
注意我不知道model0a做了什么,所以只是给出了新列应该是什么,因为结果向量来自你的预测函数。这会将新数据添加为新列