簡體   English   中英

R的for循環內的if-else語句

[英]if-else statement inside for loop for R

我已經讀過一些for循環的if-else if問題,但是我似乎無法解決腳本的問題。

type = numeric(length(r))

for (i in 1:10) {
    if ( ((s_mov[i] < s_rot[i]) & (e_rot[i] < e_mov[i])) | ((s_rot[i] < s_mov[i]) & (s_mov[i] < e_rot[i])) == TRUE) {
        type[i]=1
    } 
    else if ( ((s_doc[i] < s_rot[i]) & (e_rot[i] < e_doc[i]) == TRUE) {
        type[i]=2
    }
    else if ( ((s_rot[i] < e_mov[i]) & (s_doc[i] < e_rot[i])) | ((s_rot[i] < s_mov[i]) & (s_doc[i] < e_rot[i])) == TRUE) {
        type[i]=3
    }
}

或者我也嘗試過這種方式

for (i in 1:10) {
    if ( ((s_mov[i] < s_rot[i]) & (e_rot[i] < e_mov[i])) | ((s_rot[i] < s_mov[i]) & (s_mov[i] < e_rot[i])) == TRUE) {
        type[i]=1
    } 
    else if ( ((s_doc[i] < s_rot[i]) & (e_rot[i] < e_doc[i]) == TRUE) {
        type <- replace(type, type[i],2
    }
    else if ( ((s_rot[i] < e_mov[i]) & (s_doc[i] < e_rot[i])) | ((s_rot[i] < s_mov[i]) & (s_doc[i] < e_rot[i])) == TRUE) {
        type <- replace(type, type[i],3
    }
}  

但我不斷

Error: unexpected '{' in:

怎么了?

我不確定,但是我認為,取決於數據,當所有1:10都首先滿足if語句時,它將為所有10個元素寫入1,而不是彎腰,而是繼續並導致錯誤。

好像您在不同的地方缺少幾個右括號。 我強烈建議您使用RIDE等出色的IDE,它具有突出顯示匹配括號的好處。

兩種type <- replace...語句都需要結束)
只是通過目測, else if還缺少一個) ,它也看起來像第一個:

else if ( ((s_doc[i] < s_rot[i]) & (e_rot[i] < e_doc[i]) == TRUE) {

您有4個開孔,其中只有3個開孔括號。

我沒有檢查其他語句,但是您應該檢查。

在第一個示例中,您的第一個else if有一個額外的(

在第二個示例中,第一個else if具有一個額外的( ,而您的replace函數沒有)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM