为什么 R 函数不写入环境?

Why would an R function not write to the environment?

我正在尝试在 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)