二元间断函数的曲面

时间:2019-04-03 12:10:12

标签: r function plot surface rgl

我有一个要创建其表面的双变量step函数。该函数本质上如下所示:

=SUMPRODUCT(((C4:C9<=A12)*(C4:C9<>"")*(E4:E9>A12))+((I4:I9<=A12)*(I4:I9<>"")*(K4:K9>A12))+((O4:O9<=A12)*(O4:O9<>"")*(Q4:Q9>A12)))

当我使用df<-data.frame(a = rnorm(100, 0, 10), b = rnorm(100, 0, 10)) f<-function(x,y){ mean(df$a * x >= df$b * y) } 包中的plot3d时,我总是收到类似的错误消息

rgl

尺寸[产品10201]的尺寸与对象[1]的长度不匹配

这是什么问题?有什么办法可以3d绘制我的函数吗?

1 个答案:

答案 0 :(得分:0)

问题是f的定义。 plot3d(f)将传递xy的向量,而您的函数将取所有均值并返回单个值。

解决此问题的最简单方法是调用Vectorize函数,该函数将f循环包装以针对每个x, y对分别进行计算。例如,使用您在问题中对f的定义,

plot3d(Vectorize(f), xlim = c(-2,2), ylim = c(-2, 2))

产生此图:

screenshot