[英]For loop not iterating through all values in vector
我試圖將多個時間序列的每年NA值相加。 我創建了一個僅包含日期的向量,然后將其與日期和臭氧值的向量進行比較。 我首先創建了一個for循環,該循環遍歷我的日期向量的所有日期以僅提取年份。 然后,我正在將年向量與臭氧和日期值向量中的年進行比較(這是我的問題所在),然后我希望將每年放入向量中並求和NA值。 當我嘗試遍歷臭氧矢量的年份時,我要么創建了一個無限循環,要么僅提取了第一個變量。
我嘗試了幾種不同的方法來迭代日期和時間的向量,但是非常困難。 下面列出了我嘗試過的其他內容以及我的代碼:
totalNA <- c()
for (i in npsfiles[1]) {
timeozone <- import(i, date="DATE", date.format = "%m/%d/%Y", header=TRUE, na.strings="-999")
O3 <- c(timeozone$O3)
tyr <- substr(timeozone$date, 1, 10)
ozone <- O3
names(ozone) <- tyr
for (d in as.character(tyr)) {
theyears <- format.Date(d, "%Y")
print(theyears)
for (y in length(ozone)) {
if (names(ozone[y]) == theyears) {
totalNA <- c(totalNA, ozone[y])}
print(y)
}
}
}
我的問題在第三個for循環中。 我也嘗試過:
for (y in seq(1:length(ozone))
for (y in ozone)
for (y in names(ozone))
這是一些數據:
ABBR DATE O3
BADL-VC 10/01/1987 02 -999
BADL-VC 10/01/1987 03 -999
BADL-VC 01/01/1989 10 12
BADL-VC 01/01/1989 11 13
BADL-VC 01/01/1989 12 14
關於第三循環有兩個問題:
length(ozone)
應該是1:length(ozone)
。 否則,您僅迭代最后一個臭氧項。 names(ozone)
返回完整日期而不是年份。 因此,您需要格式化這些元素,就像處理theyears
。 考慮對第三循環進行以下調整:
for (y in 1:length(ozone)) {
ozoneyear <- format.Date(names(ozone[y]), "%Y")
if (ozoneyear == theyears) {
totalNA <- c(totalNA, ozone[y])
}
print(y)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.