如何更新for循环中的值?

时间:2014-05-21 03:00:39

标签: r for-loop

我有一个初始化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)
}

2 个答案:

答案 0 :(得分:0)

由于您的示例不可重现,因此很难确定,但请注意predict.lm(...)默认情况下为na.action=na.pass,这意味着newdata任意NA的所有行值默认情况下为预测生成NA。由于您{6}行第一次传递newdata NApredicted在这些相同的元素中会有NA。这意味着amountsone_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做了什么,所以只是给出了新列应该是什么,因为结果向量来自你的预测函数。这会将新数据添加为新列