## File: coef.R

package info (click to toggle)
cluster 2.0.7-1-1
 `12345678910111213141516171819202122232425262728293031323334353637383940414243` ``````#### R-interface to Agglomerative / Divisive coefficient #### coef.twins <- function(object, ...) { if(inherits(object, "agnes")) object\$ac else if(inherits(object, "diana")) object\$dc else stop("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\$height mrg <- object\$merge nh <- 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 2004 nh <- 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 } ``````