在for循环中的if-else语句为R

时间:2014-12-09 17:07:42

标签: r if-statement for-loop

我已经阅读了一些if-else if for循环的问题,但我似乎无法解决问题对于我的脚本。

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满足first if语句时,它会为所有10个元素写入1,而不是弯腰,它会继续并导致错误。

2 个答案:

答案 0 :(得分:1)

看起来你错过了不同地方的几个结束括号。我强烈建议使用一个好的IDE,例如RStudio,它有一个突出匹配括号的附带好处。

type <- replace...语句都需要结束) 仅仅通过观察,看起来第一个else if也错过了结束)

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

你有4个开口,只有3个右括号。

我没有检查过其他陈述,但你应该这样做。

答案 1 :(得分:-1)

在第一个示例中,您的第一个else if有一个额外的(

在第二个示例中,您的第一个else if有一个额外的(,而您的replace函数没有)