R 理解“优化”功能

R 理解“优化”功能,r,optimization,R,Optimization,我是新手,我的问题是初学者 我有 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(F

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

我有

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_optimkappa是一个向量,而第一个语句中的t是一个标量。我假设FX_funx也是一个标量,因此计算absFX_funx-t也是一个标量,优化将看到一个标量值函数,它将愉快地优化

另一方面,在第二个语句中,FX_funx-kappa也是一个向量:标量减向量在R中起作用,它只对kappa的每个元素进行减法,结果就是一个向量。但是现在optimize看到了一个向量值函数,显然它不能优化它


sapply的工作原理如下:sapplyv,f取函数f和向量v,将f应用于v的eash元素,并用结果构建向量w。也就是说,在数学上wi=fvi,但f只将标量值作为v元素的参数,一个接一个。

谢谢,我不明白为什么我第一句话中的t是标量。不会接受卡帕的价值吗?我的意思是:var_optim,kappa的值是数字标量。所以,t,一个接一个地取kappa的值,总是一个标量值。我更新了答案。在值上循环与在i上循环完全等价,取值kappa[i]。还要考虑R中的for循环:它从不循环整数,而总是在向量的值上循环。这是v中的x。符号1:n只是表示向量c1,…,n的语法糖。同样的情况也发生在sapply身上,通常你不需要实际的索引。