if(x <0){
result = x-1
}else if(x >=0 &x <5){
result = x-1
}else{
result = x+2
}
return(result)
}
第一次件ifelse嵌套这么多的使用,你是跟自己有仇么,非要把问题搞的这么复杂。。。建议用if条件句,或者BASE中原始方法修改。
ifelse个人觉得嵌套两个最优。再多必然晕。
我理解,你的意思是循环的判断,当最后一项为1,且第一项为0 的时候,那么这两者交换;
但是,代码表示的逻辑是,不论是不是最后一项,只要不满足当前项为1,下一项为0,就做else块中的代码;可见当i=1,5,6,7,8,9,10时,都执行了else中的代码;
最后,按照你的风格,修改如下:
redrowmove<-function(x){for(i in 1:(length(x)-1)){
if(x[i]==1 && x[i+1]==0){
x[i]=0
x[i+1]=1
}
}
if(x[length(x)]==1 && x[1]==0){
x[length(x)]=0
x[1]=1
}
return(x)
}