我尝试通过以下方式将聚类方法构建为函数:
mydata <- mtcars
# Here I construct hclust as a function
hclustfunc <- function(x) hclust(as.matrix(x),method="complete")
# Define distance metric
distfunc <- function(x) as.dist((1-cor(t(x)))/2)
# Obtain distance
d <- distfunc(mydata)
# Call that hclust function
fit<-hclustfunc(d)
# Later I'd do
# plot(fit)但是为什么它会给出以下错误:
Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") :
missing value where TRUE/FALSE needed什么才是正确的方法呢?
发布于 2013-12-03 13:21:08
请务必阅读您所使用的函数的帮助。?hclust非常清楚第一个参数d是一个不同的对象,而不是一个矩阵:
Arguments:
d: a dissimilarity structure as produced by ‘dist’.更新
由于操作员现在已经更新了他们的问题,因此需要的是
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) as.dist((1-cor(t(x)))/2)
d <- distfunc(mydata)
fit <- hclustfunc(d)原创
你想要的是
hclustfunc <- function(x, method = "complete", dmeth = "euclidean") {
hclust(dist(x, method = dmeth), method = method)
}然后
fit <- hclustfunc(mydata)按照预期工作。注意,您现在可以将相异系数方法作为dmeth和聚类方法传入。
https://stackoverflow.com/questions/20343398
复制相似问题