[R] Why is it not possible to cut a tree returned by Agnes or Diana by height?

Leszek Nowina |eeko|n@n @end|ng |rom gm@||@com
Sat Apr 13 17:36:32 CEST 2019

    > asdf = data.frame(x=c(1,2,3), y=c(4,5,6), z=c(7,8,9))
    > cutree(agnes(asdf), h=100)
    Error in cutree(agnes(asdf), h = 100) :
      the 'height' component of 'tree' is not sorted (increasingly)
    > cutree(diana(asdf), h=100)
    Error in cutree(diana(asdf), h = 100) :
      the 'height' component of 'tree' is not sorted (increasingly)

I'm not sure if I understand why this is the case.

This is what I want: Cluster stuff by the //distances//, **not** by
how many clusters I want to have.

If two things are further from each other than X, they should go to
different clusters. Otherwise, the same cluster.

Is it unreasonable what I'm asking for? I image if I was to manually
implement Agnes or Diana this would go like that: stop joining
clusters if the smallest distance between any pair of clusters is
larger than X (Agnes) or stop dividing clusters if the largest cluster
has a diameter of X (Diana); but since both methods always join/divide
to the very end I thought using cutree with a height parameter would
give me what I need. It won't.

Am I missing something?

More information about the R-help mailing list