我想用R语言绘制等值线。为此,我尝试用函数outter准备数据,但它不能正常工作。
有人能指出问题吗?
iris[c(1,51, 101),]
x <- seq(0, 4, length=50)
y <- seq(0, 4, length=50)
seto<-subset(iris[1:50,],select=-Species)
virgi<-subset(iris[101:150,],select=-Species)
seto.m<-apply(seto[1:45,],2,mean)
virgi.m<-apply(virgi[1:45,],2,mean)
seto.v<-var(seto[1:45,])
virgi.v<-var(virgi[1:45,],)
fn <- function(x, y) mahalanobis(c(x, y), seto.m[1:2], seto.v[1:2, 1:2])
fn(3, 4) # works properly
z <- outer(x, y, fn) # doesn't work
我收到一个错误消息“x %*% cov中的错误:不一致的论点”我认为矩阵和向量的维数是一致的,尽管......
我用了一个函数
fn <- function(x, y) x^2+y^2
而且成功了
1条答案
按热度按时间omhiaaxx1#
outer
中的函数必须矢量化。如果不是,请使用Vectorize
将其转换为矢量化。