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