我写了一个带有两个变量的函数,我想在其中优化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 ..不确定我是假装这是更复杂或如果它真的是,但我似乎无法使其工作
答案 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)
}