存在一種避免在激活某些條件以跳過下一次迭代時在迭代過程中存儲空值的方法?的「如何解決」的目的這個問題是結構本身循環避免在for循環中跳過迭代時存儲空值
[背景]:
我指的情況下,當你需要使用內部的存儲機制循環與條件語句一起使用,並給出基本上其中一條可能路徑不符合您感興趣的場景。爲了在這一時刻給予治療,而不是計算的後驗,你可以跳到下一次迭代。
[例]
假設給定數字的某一序列,我感興趣的只是存儲的是大於2的列表的序列號。
storeGreaterThan2 <- function(x){
y <- list()
for (i in seq_along(x)) {
if (x[i] > 2) {
y[[i]] <- x[i]
} else {
next
}
}
y
}
前面的功能處理的最終目的,但是當跳過反覆的條件被激活,在索引中缺少的操作充滿最終列表中的空值。
> storeGeaterThan2(1:5)
[[1]]
NULL
[[2]]
NULL
[[3]]
[1] 3
[[4]]
[1] 4
[[5]]
[1] 5
在處理問題的循環,它可能如何處理與結構內部的精神?
裏面你的循環使用索引長度(y)+1添加一個附加元素,如:y [[length(y)+1]] < - x [i]'。取決於你想要的結果,有幾種比使用for循環更好更快的方法。 – Dave2e
這是一個很好的解決方案,可以解決同一個循環中NULL值的問題。 –