Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储优化函数的r循环的输出向量_R - Fatal编程技术网

存储优化函数的r循环的输出向量

存储优化函数的r循环的输出向量,r,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))))

我编写了一个包含两个变量的函数,我想在其中优化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))))
}

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

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

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
}
或者(回答您的评论):


这难道不像
res那么简单吗?不幸的是,我的问题本来可以用更好的措辞。Rho不是数据集中的变量;它仅定义为函数“fr”下数学表达式中的一个术语。因此,当您创建函数(rho)时,它没有值,并且r返回一个错误“object“rho”not found”……当我手工解决这个问题时,我必须定义rho=0.01;rho=0.025,每次我优化。这就是为什么我尝试了循环方法——主要是为了整合我的代码并消除潜在的错误。我可以打印函数中的值以确认它是否正常工作…我只是不知道如何存储它们。是的,这很有效,谢谢。这个解决方案可以从这里的另一个问题得到:(你回答的时候我正在看)…你的解决方案很有帮助。还有一个问题需要充分理解:为什么需要i=i+1?我在想,因为在第二次迭代中,这将给我们o[2],n[2],在第三次迭代中,它将给我们o[3],n[3]……等等?需要I=I+1,因为你不是在I上循环,而是在rho上循环。我编辑了我的答案来指出这一点。谢谢——编辑很有帮助。“我”需要“我+1”这首曲子是我自己尝试的时候一直把我弄得一团糟的原因,但你的例子说明了我实际上是如何做到这两种方式的……现在我看到它就在我面前,如此简单
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)
}