存储来自r循环的输出向量,用于优化函数

时间:2018-05-09 19:30:35

标签: r

我写了一个带有两个变量的函数,我想在其中优化Z:

fr<-function(Z) {
delta<-pnorm((Matrix81fulld$CumZavg-sqrt(rho)*Z)/sqrt(1-rho)) - pnorm((Matrix81fulld$CumZavgLow-sqrt(rho)*Z)/sqrt(1-rho))

sum((Matrix81fulld$n*(Matrix81fulld$Prob1981 - delta)^2)/((delta*(1-delta))))
}

以上功能有效。我传递一个rho值,然后求解Z.我写了一个循环,它将多个rho值传递给fr函数,以便在不同的rho值上优化Z:

for (rho in c(0.01, 0.025, 0.05, 0.1, 0.15, 0.2, 0.3)){
     o=optimize(fr,interval=c(-2,2))
     n=nlm(fr,p=0)
}

当然,当我打印&#39; o时,只返回rho = 0.3的优化值,因为所有其他值都被覆盖了。我想将o和n存储在2个单独的向量中,这些向量包含rho值的结果。我知道有类似的问题已被提出,但它们似乎都更容易,因为例如,循环通常在1:10中为i运行。在这种情况下,我有7个特定值的rho I交换,然后在每种情况下优化fr ..不确定我是假装这是更复杂或如果它真的是,但我似乎无法使其工作

1 个答案:

答案 0 :(得分:0)

似乎您只需要在每次循环迭代中存储值

o = list()
n = list()
i = 1
for (rho in c(0.01, 0.025, 0.05, 0.1, 0.15, 0.2, 0.3)){
  o[i]=optimize(fr,interval=c(-2,2))
  n[i]=nlm(fr,p=0)
  i=i+1
}

或者(回答你的评论):

o = list()
n = list()
all_rhos = c(0.01, 0.025, 0.05, 0.1, 0.15, 0.2, 0.3)

for (i in 1:7)){
  rho = all_rhos[i]
  o[i]=optimize(fr,interval=c(-2,2))
  n[i]=nlm(fr,p=0)
}