下面是一個玩具模型的東西,是造成我的問題。我有一個T和F的向量。我想遍歷這個向量,如果最後3個元素的總和大於等於1(這意味着至少有1個元素爲TRUE),我將空向量中的元素賦值爲1,否則我在空向量爲0.這樣,當for循環遍歷起始向量時,我用1和0填充空向量。我遇到的問題是一個錯誤,我將在下面粘貼。如果語句內循環
two_true <- c(T,F,F,F,F,F,F,F,F,T,T,T,F,F,T,F,F,F,F,F,F)
look_bac <- 3
no_signal1 <- c()
for(i in 1:length(two_true)) {
if(sum(two_true[i:(i+look_bac-1)]) >= 1) {
no_signal1[i] <- 1
} else {
no_signal1[i] <- 0
}
}
運行這給了我以下錯誤:
錯誤如果(總和(two_true [I:第(i + look_bac - 1)])> = 1){: 缺失值,其中TRUE/FALSE需要
我似乎並沒有得到這個,因爲if語句的條件顯然是TRUE或FALSE變體。我知道可能有許多其他方法來創建這個新的向量,但我想學習R基礎知識,所以使用上述工具(如果語句和for循環)的任何幫助將有所幫助。謝謝!
調試循環時,最好知道問題是否僅在某些迭代中發生。在你的循環中放入一個'print(i)'命令,運行所有內容,並查看錯誤之前循環得到多少。然後,當你看到'i'是20或21時可能會發生問題,將'i'設置爲其中一個值並運行違規行:'sum(two_true [i:(i + look_bac-1)]) > = 1'。你可以減少它,並找到問題,'two_true [我:((i + look_bac-1)]',並思考爲什麼它不適用於'我'的價值。 – Gregor
,因爲當你20歲以後,你的if語句將返回NA,這就是爲什麼你會收到錯誤信息。 – fhlgood
第一條評論:*如何釣魚*;第二條評論*這裏是你的魚*。 – Gregor