了解“优化”功能

时间:2019-01-23 16:01:06

标签: r optimization

我是R的新手,我的问题是初学者。

我有

kappa <- c(0.0001, 0.001, 0.01, 0.1, 0.5, 0.9, 0.99, 0.999, 0.9999)

我不明白为什么

var_optim <- sapply(kappa, function(t) 
  optimize(function(x) abs(FX_fun(x) - t), c(-2,2))$minimum)

工作正常,但

var_optim <- optimize(function(x) abs(FX_fun(x) - kappa), c(-2,2))$minimum 

不是

这两个表达式有什么区别,因为我一直认为它们是相同的

我收到一个回复​​,告诉我在我的第一条陈述中t是标量,而不在我的第二条陈述中。

实际上,我在第一句中不理解t是一个标量。因为以我的理解为标量,我们应该写的是

var_optim <-sapply(1:长度(kappa),function(t)优化(function(x)abs(FX_fun(x)-kappa [i]),c(-2,2))$ minimum)< / p>

谢谢!

1 个答案:

答案 0 :(得分:1)

kappa是向量,而第一条语句中的t是标量。我假设FX_fun(x)也是一个标量,所以计算abs(FX_fun(x)-t)也是一个标量,并且optimize将看到一个标量值函数,它将很高兴地进行优化。

另一方面,在第二条语句FX_fun(x)-kappa中也是一个向量:标量减向量在R中起作用,它只对kappa的每个元素进行减法运算,结果是一个向量。但是,现在optimize看到了一个向量值函数,显然它无法对其进行优化。


这是sapply的工作方式:sapply(v, f)接受一个函数f和一个向量v,将f应用于v的eash元素,并构建一个向量w与结果。也就是说,从数学上讲w(i)=f(v(i)),但是f只接受标量值作为参数(v的元素,一个接一个)。