[英]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.