我正试图在R中编写一个相对简单的AR(1)表示。我找不到这段代码有任何明显的问题,而且我返回的不是错误,简单的是不向环境写入,也不将areone2识别为函数。任何建议都将不胜感激。
areone2<-function(y,N,p,d){
yvec<-c(rep(y, times = N))
for(i in 1:N){
yvec[i+1]<-
((1+p*(yvec[i]-d))
+ d)
}
plot(yvec, type='l', xlab="N", ylab="yeild")
}
areone2(.3,10,.9,.2)
它不会触发错误或警告,因为您在二进制操作的中间断线,但解析程序无法识别该二进制操作。以+ 3
开头是完全合法的。这只是3
,这不是你想要的。
例如,2+3等于5。但是一条新线路上的+3不会将其添加到前一条线路中
> 2 ## break the line here and R returns 2
[1] 2
> +3 ## adding three next is not recognized as a continuation of a call
[1] 3
但是,如果你用括号(而不是括号)包裹通话,你仍然可以打断线路
(2
+ 3)
# [1] 5 ## correct
{2
+ 3}
# [1] 3 ## incorrect
把你的yvec[]<-
任务电话接到一条线上是更干净、更安全的方法。
yvec[i+1] <- ((1+p*(yvec[i]-d)) + d)