我是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>
谢谢!
答案 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
的元素,一个接一个)。