我知道有很多人发布了这个问题,我确实查看了编写代码的答案,但它仍然没有工作......有人可以指出我在哪里做错了吗?非常感谢提前!
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 " }"
>
答案 0 :(得分:0)
您似乎误解了else
的概念。
else
涵盖了与之前的if
或else if
语句不匹配的所有案例。
因此,您无法为else
指定任何条件。
要涵盖i
不是1
或2
的所有情况,只需使用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
}
}
}
}
}