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