for循环使用if中的if else语句

时间:2013-10-15 08:52:47

标签: r if-statement for-loop

我知道有很多人发布了这个问题,我确实查看了编写代码的答案,但它仍然没有工作......有人可以指出我在哪里做错了吗?非常感谢提前!

for(j in 1:1000){

        for(i in 1:52){

                   if (i == 1){
                        r.sims[i,] <- r.sims[1]
                        }
                 else if (i == 2){
                       r.sims[i,] <- r.sims[2]
                       }
                 else (i > 2){
                               r.sims[i,] <- r.sims[i-1,]*ar1 + r.sims[i-2,]*ar2 + e.sims[i,] + e.sims[i-1,]*ma1
                           }

                       }

                }

我有以下错误

Error: unexpected '{' in:
"       }
             else (i > 2){"
>                                r.sims[i,] <- r.sims[i-1,]*ar1 + r.sims[i-2,]*ar2 + e.sims[i,] + e.sims[i-1,]*ma1
Error in r.sims[i, ] <- r.sims[i - 1, ] * ar1 + r.sims[i - 2, ] * ar2 +  : 
  replacement has length zero
>                    }
Error: unexpected '}' in "                   }"
>                    
>                        }
Error: unexpected '}' in "                       }"
> 
>                 }
Error: unexpected '}' in "                }"
> 

2 个答案:

答案 0 :(得分:0)

您似乎误解了else的概念。

else涵盖了与之前的ifelse if语句不匹配的所有案例。 因此,您无法为else指定任何条件。

要涵盖i不是12的所有情况,只需使用else,不带任何()括号。

如果您想要条件,请使用else if (condition)

答案 1 :(得分:0)

在不了解您的代码应该做什么的情况下,我仍然举例说明了如何修复脚本。我认为关键是您需要在{...}语句后面提供大括号else,以便它考虑以下代码。

实施例

r.sims <- matrix(runif(52)*100, nrow=52, ncol=100)
e.sims <- matrix(runif(52)*100, nrow=52, ncol=100)

ma1 <- 1
ar1 <- 2
ar2 <- 3

for(j in 1:1000) {
    for(i in 1:52) {
        if (i == 1) {
            r.sims[i,] <- r.sims[1]
        } else {
            if(i == 2) {
                r.sims[i,] <- r.sims[2]
            } else {
                if(i > 2) {
                    r.sims[i,] <- r.sims[i-1,]*ar1 + r.sims[i-2,]*ar2 + e.sims[i,] + e.sims[i-1,]*ma1
                }
            }
        }
    }
}