【问题标题】:Getting output from for-loop in r从r中的for循环获取输出
【发布时间】:2017-10-12 08:31:28
【问题描述】:

我正在尝试在 R 中编写此 for 循环代码,但出现此错误。

Error in h(i - 1) : could not find function "h"

我该怎么办?

F1<-as.matrix(F_1_) #importing data
a01=0.1             #importing parameters
a11=0.1
b11=0.1
epsilon=0.5
a02=0.1
a12=0.1
b12=0
h(0) <- 0.3208   #starting value for h(i)

for(i in 1:2377)
{
 h(i)<- ((a01+a11*h(i-1)*(epsilon^2)*h(i-1)*b11)+F1[,2]*(a02+a12*h(i-1)*(epsilon^2)+h(i-1)*b12))
}
return(h(i))       #getting output from h(i), h(i) depend on h(i-1) and other parameters

【问题讨论】:

  • 看起来您正试图将h 设为结果向量,对吧?如果是,那么 () 是用于子集向量的错误括号,请使用 []。例如letters[2]。最好先分配你的向量,而不是把你的幻数放在 for 循环中。
  • 非常感谢。我的问题解决了。

标签: r for-loop


【解决方案1】:

h() 的语法假定 h 是一个函数。

您可以将 h 设置为空列表,对其进行初始化并对其进行迭代。

h <- list()
h[[1]] <- 0 # or whatever initial value
for(i in 2:2377)
{
 h[[i]]<- ((a01+a11*h[[i-1]]*(epsilon^2)*h[[i-1]]*b11)+F1[,2]*(a02+a12*h[[i-1]]*(epsilon^2)+h[[i-1]]*b12))
}

或者,您可以将 h 初始化为 0 的向量并以相同的方式进行迭代。

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多