gpt4 book ai didi

r - 如何在R中将'hclust'用作函数调用

转载 作者:行者123 更新时间:2023-12-03 13:57:14 31 4
gpt4 key购买 nike

我尝试通过以下方式将聚类方法构造为函数:

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


什么是正确的方法?

最佳答案

请阅读所使用功能的帮助。 ?hclust很清楚,第一个参数d是一个不相似对象,而不是矩阵:

Arguments:

d: a dissimilarity structure as produced by ‘dist’.


更新资料

由于OP现在已经更新了他们的问题,所以需要的是

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和聚类方法传递。

关于r - 如何在R中将'hclust'用作函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343398/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com