对于返回多个值的函数,请使用optimize()

时间:2014-08-24 16:26:37

标签: r

通过示例更容易询问。如果我有一个功能

fn <- function(x) {
...
return(c(a,b,c))
}

我希望最大化(或最小化)a,但也会将bc的值设为最佳值。

当然我可以使用fn2 <- function(x) fn(x)[1]来确定最佳值,然后再次调用该函数,但我想知道是否有更聪明的方法。

1 个答案:

答案 0 :(得分:1)

optim需要返回值为标量。文件说的是

  fn: A function to be minimized (or maximized), with first
      argument the vector of parameters over which minimization is
      to take place.  It should return a scalar result.

您可以将感兴趣的值写入函数内的全局变量。这不一定是最好的做法,但它可以奏效。

f <- function(x){
  .vals <<- c(x, x+1)
  x^2
}
optim(1, f)

然后我们可以查看.vals

中存储的内容
> .vals
[1] 9.765625e-05 1.000098e+00