使用R中的函数绘制等高线图

使用R中的函数绘制等高线图,r,function,contour,R,Function,Contour,在下面的代码中,我尝试使用函数norm.dem生成由x和y给出的点的等高线图。我似乎不知道该怎么做。我已经尝试了我能想到的一切。出于某种原因,函数不允许我输入序列值。外部函数不应该给我一个值列表吗 x=seq(-10,10,length=1000) y=seq(-10,10,length=1000) sigma <- matrix(c(10,-5,-5,20), ncol=2) sigma norm.den=function(x,y,sigma,mu) { j<-c(x,y

在下面的代码中,我尝试使用函数norm.dem生成由x和y给出的点的等高线图。我似乎不知道该怎么做。我已经尝试了我能想到的一切。出于某种原因,函数不允许我输入序列值。外部函数不应该给我一个值列表吗

x=seq(-10,10,length=1000)
y=seq(-10,10,length=1000)

sigma <- matrix(c(10,-5,-5,20), ncol=2)
sigma

norm.den=function(x,y,sigma,mu) 
{
  j<-c(x,y)
  k=j-mu
  t<-t(k)
  s<-solve(sigma)
  d<-det(sigma)

  ((2.718)^(-t%*%s%*%k/2))/(2*(3.14)*sqrt(d))

}

z=outer(x,y,norm.den,sigma=sigma,mu=c(0,0))
强制使用for循环工作

normden <- function(x, y, solvsig=ss, detsig=ds, mu=c(0, 0)) {
  k <- c(x, y) - mu
  tk <- t(k)
  (exp(-tk %*% ss %*% k / 2)) / (2*pi*sqrt(ds))
}

sigma <- matrix(c(10, -5, -5, 20), ncol=2)
ss <- solve(sigma)
ds <- det(sigma)

x <- seq(-10, 10, length=10)
y <- seq(-10, 10, length=10)
z <- array(dim=c(length(x), length(x)))
for(i in seq(x)) {
for(j in seq(y)) {
  z[i, j] <- normden(x=x[i], y=y[j])
}}
z

我得到了与OP提到的相同的错误,-tk%*%ss中的错误:不一致参数。

你有光栅的特性,如果你把它插入其中,你应该得到你想要的。您可能需要使用rasterFromXYZ祝您好运!当我按原样运行代码时,它会给我错误“error in-t%*%s:非一致参数”。@Honeydippedbager um…outer的第三个参数只是函数名,调用中的其余…参数会传递给函数。@Honeydippedbager这不是问题所在。该函数被正确调用,因为所有参数都在outer中提供。在norm.den中,-t的维数为1.2000,s的维数为2.2。我错了,我要拉它!对不起,误会了!
outer(x, y, "normden")