0
我有一個循環應該運行大約300,000次,但當我將數據綁定到數據框時,它結束於55,我不知道發生了什麼。For Loop早期結束 - 爲什麼?
迴路中的問題是:
TrendlineMeta <- data.frame("FutureRecord" = character(), "System" = numeric(), "Intercepts" = numeric(), "Slopes" = numeric(), stringsAsFactors = FALSE)
for (i in unique(TrendingData$FutureRecord)){
FilteredList <- TrendingData[TrendingData$FutureRecord == i,]
Regressed <- lm(FilteredList$Value ~ FilteredList$Time)#, na.action = na.omit)
newrow <- c("FutureRecord"=j, "System"=max(as.character(FilteredList$System)), "Intercepts"=summary(Regressed)$coefficients[1,1], "Slopes"=summary(Regressed)$coefficients[2,1])
TrendlineMeta <- rbind(TrendlineMeta, data.frame(as.list(newrow), stringsAsFactors = FALSE))
}
和後55個itterations結束。
然而,這個循環:
TrendlineMeta <- data.frame("FutureRecord" = character(), "System" = numeric(), "Intercepts" = numeric(), "Slopes" = numeric(), stringsAsFactors = FALSE)
for (i in unique(TrendingData$FutureRecord)){
FilteredList <- TrendingData[TrendingData$FutureRecord == i,]
Regressed <- lm(FilteredList$Value ~ FilteredList$Time)#, na.action = na.omit)
#newrow <- c("FutureRecord"=j, "System"=max(as.character(FilteredList$System)), "Intercepts"=summary(Regressed)$coefficients[1,1], "Slopes"=summary(Regressed)$coefficients[2,1])
#TrendlineMeta <- rbind(TrendlineMeta, data.frame(as.list(newrow), stringsAsFactors = FALSE))
}
完成罰款。
這是怎麼回事我做錯了?我是R新手,所以沒有什麼會跳出來對我。
不要在循環中生長對象。爲了您的任務,您可以輕鬆使用分割應用合併功能之一。 – Roland
「FutureRecord」中的j = j代表之前在代碼中定義的靜態對象嗎? – Sebastian
@塞巴斯蒂安,那應該是「FutureRecord」=我不是j。我曾嘗試在循環中執行「j < - i」,以查看是否以某種方式直接引用了我正在搞的東西。 @羅蘭,我可以研究一下,但是會在一個循環中增長一個對象,導致它過早結束? – hcaelxxam