二元不连续函数的表面

问题描述 投票:0回答:1

我有一个双变量步骤函数,我想创建一个表面。该函数基本上看起来如下:

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时,我总是会收到类似的错误消息

Error in dim(zvals) <- dim(xvals) : 

dims [product 10201]与对象的长度不匹配[1]

这里有什么问题?有没有其他选择如何3d绘制我的功能?

r function plot surface rgl
1个回答
0
投票

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

修复此问题的最简单方法是调用Vectorize函数,该函数将f包装在循环中,以便为每个x, y对单独计算它。例如,您在问题中定义了f

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

产生这个情节:

screenshot

© www.soinside.com 2019 - 2024. All rights reserved.