我想使用R语言进行基于中心点的分区聚类(详见此处第95页)。我的输入是一个不相似性矩阵,因此我应该设置usepam=FALSE。然而,我不明白inherits参数的作用…由于我有一个不相似性矩阵,我应该将diss设置为TRUE。但是,inherits
参数的作用是什么?因为我知道我的数据矩阵是相似性还是不相似性矩阵,所以我知道diss
参数应该设置为TRUE还是FALSE。那么,为什么我需要inherits
呢?
回答:
函数的签名是
pamk(data,krange=2:10,criterion="asw", usepam=TRUE, scaling=FALSE, alpha=0.001, diss=inherits(data, "dist"), critout=FALSE, ns=10, seed=NULL, ...)
diss
参数期望一个TRUE或FALSE值。如果你没有指定它,它将使用默认值,即设置为inherits(data, "dist")
。这意味着如果你没有设置diss
,它会检查你的第一个参数(你的data=
值)是否继承自dist
类,以判断它是否可能是一个距离矩阵。你可以这样设置该类型的对象:
xx<-dist(matrix(rnorm(20), ncol=2));class(xx)
但是,如果你通过其他方式计算你的矩阵,它可能没有”dist”类。关键是他们试图判断你传递的对象类型,并为你设置正确的默认值。