Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 绘制预定义函数的三维曲面_R_3d - Fatal编程技术网

R 绘制预定义函数的三维曲面

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

我想绘制包含switch语句的预定义函数的三维曲面。如果我运行代码,较长的对象长度不是较短对象长度的倍数,并且getas.characterFUN、mode=function、envir=envir中存在错误:找不到mode‘function’的对象‘f’。这两个对象在打印时没有我想要的结果。简化代码如下所示。谁能解决这个问题

    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)