我可能誤解了 for 回圈的作業原理,但我很難理解為什么當前代碼不填充向量(盡管代碼本身運行,向量顯然仍然是 NA)。我想可能還有一種方法可以使用 ifelse() 對所有這些資訊進行子集化,但我遇到了“編碼障礙”。
問題(詳細說明):我正在嘗試根據 2008 年總統周期的博彩市場,在選舉日之前的最后 90 天內撰寫一個正在運行的選舉團預測。我證明使用兩個 for 回圈是合理的,因為代碼需要檢查特定日期的條件陳述句并將特定值添加到當天的預先存在的總和中。換句話說,如果奧巴馬在某一特定州的投注價格高于麥凱恩,則該州的選舉人票將在當天授予奧巴馬,反之亦然。同樣,代碼運行,但向量顯然仍然是 NA。
相關變數的關鍵
EV,該特定州的選舉人票
X,分配給每個觀察
日的唯一值,日期類別 PriceD,Dem 候選人 PriceR 的投注價格,Rep 候選人 DaysToEday 的投注價格,一個數值,表示可變天和選舉之間的差異日 (2008-11-04)
有問題的代碼
Obama08.ECvotesByDay <- McCain08.ECvotesByDay <- rep(NA, 90)
for (i in 1:90) {
for (j in 1:nrow(subset(mpres08, mpres08$DaysToEday <= 90))){
if(mpres08$PriceD[j] > mpres08$PriceR[j]) {
Obama08.ECvotesByDay[i] <- Obama08.ECvotesByDay[i] mpres08$EV[j]
}
else {
McCain08.ECvotesByDay[i] <- McCain08.ECvotesByDay[i] mpres08$EV[j]
}
}
}
資料輸入(五行)
structure(list(state = c("AK", "AK", "AK", "AK", "AK"), state.name = c("Alaska",
"Alaska", "Alaska", "Alaska", "Alaska"), Obama = c(38L, 38L,
38L, 38L, 38L), McCain = c(59L, 59L, 59L, 59L, 59L), EV = c(3L,
3L, 3L, 3L, 3L), X = c(24073L, 25195L, 8773L, 25603L, 25246L),
day = structure(c(13937, 13959, 13637, 13967, 13960), class = "Date"),
PriceD = c(7.5, 7.5, 10, 8, 7.5), VolumeD = c(0L, 0L, 0L,
0L, 0L), PriceR = c(92.5, 92.5, 90, 92, 92.5), VolumeR = c(0L,
0L, 0L, 0L, 0L), DaysToEday = c(250, 228, 550, 220, 227)), row.names = c(NA,
5L), class = "data.frame")
uj5u.com熱心網友回復:
您正在向 NA 添加一個數字,對于 R,結果為 NA。
uj5u.com熱心網友回復:
Obama08.ECvotesByDay[i]并McCain08.ECvotesByDay[i]用 初始化NA。在 R 中,如果您嘗試對其進行算術運算NA(NA例如NA 1結果NA)。根據您的中性結果,您可以在開頭用 0 初始化向量:
Obama08.ECvotesByDay <- McCain08.ECvotesByDay <- rep(0, 90)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485483.html
