Rev 5598 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
#### R-interface to Agglomerative / Divisive coefficient####coef.twins <- function(object, ...){if(inherits(object, "agnes"))object$acelse if(inherits(object, "diana"))object$dcelsestop("invalid 'twins' object")}coef.hclust <- function(object, ...){## Author: Martin Maechler, Date: 27 Nov 2004## Now "really" using $merge _and_ $height -- assuming they match!ht <- object$heightmrg <- object$mergenh <- length(ht)stopifnot(nh > 0, is.matrix(mrg), dim(mrg) == c(nh,2),is.numeric(ht), is.numeric(mrg),!is.unsorted(ht))# then they match with merge## stopifnot(all.equal(1:n, sort(-mrg[mrg < 0])))1 - sum(rowSums(mrg < 0) * ht) / max(ht) / (nh+1)}## Note this is (the only!) direct interface to bncoef(),## ---- which is used internally both in agnes() and diana() :coefHier <- function(object){## Purpose: Compute agglomerative *or* divisive coefficient from hclust/agnes/diana## ----------------------------------------------------------------------## Author: Martin Maechler, Date: 27 Nov 2004nh <- length(ht <- object$height)stopifnot(nh > 0, is.numeric(ht)).C(R_bncoef,n = as.integer(nh + 1L),ban= as.double(c(0., ht)),# <-- is this really tbe ban[]nner, as in ../src/twins.c ?cf = double(1))$cf}