R 绘制预定义函数的三维曲面
我想绘制包含switch语句的预定义函数的三维曲面。如果我运行代码,较长的对象长度不是较短对象长度的倍数,并且getas.characterFUN、mode=function、envir=envir中存在错误:找不到mode‘function’的对象‘f’。这两个对象在打印时没有我想要的结果。简化代码如下所示。谁能解决这个问题R 绘制预定义函数的三维曲面,r,3d,R,3d,我想绘制包含switch语句的预定义函数的三维曲面。如果我运行代码,较长的对象长度不是较短对象长度的倍数,并且getas.characterFUN、mode=function、envir=envir中存在错误:找不到mode‘function’的对象‘f’。这两个对象在打印时没有我想要的结果。简化代码如下所示。谁能解决这个问题 BlackScholes<-function(S, K, r, q, vol, T, result){ switch(result, c
BlackScholes<-function(S, K, r, q, vol, T, result){
switch(result,
callprice = S+k+T,
putprice = K+T,
calldelta = exp(-q * T),
putdelta = exp(-q * T)
}
x<-seq(1950000,2700000,by = 5000)
y<-seq(0,30,by = 1)
f<-BlackScholes(x,220000,0.014,0,0.2,y,"calldelta")
z<-outer(x,y,f)
persp(x,y,z)
在f中保存函数调用时,保存的是函数的结果,而不是函数调用本身。为了将函数用作outer中的FUN参数,应该将BlackScholes的命名参数作为额外参数传递给outer 此外,您可能应该避免命名任何变量T,因为它是逻辑TRUE的R缩写
z <- outer(
x,
y,
FUN = 'BlackScholes',
K = 220000,
r = 0.014,
q = 0,
vol = 0.2,
result = 'callprice'
)
persp(x,y,z)