C codes underlying agnes()
and daisy()
under
UBSAN
and LTO
no longer show pointer expression
overflow (of a length 0 vector a
with a--
call).
‘man/pam.Rd’ set.seed()
for data, hence
reproducible example.
‘src/daisy.c’ and ‘src/dysta.c’ produced from their
Fortran *.f versions by f2c
, my perl script
f2c-clean
and manual pretty editing.
C function dysta()
now returns the jhalt
"flag"; it is
no longer callable from R, nor is dysta3()
which is 'static'
now, in ‘src/fanny.c’.
Goal: Use .Call()
instead of .C()
and hence allow long
vectors for the length n(n-1)/2
distance vectors.
‘fanny-ex.R’ tests: use IGNORE_RDIFF_BEGIN .. and some explicit cheks to become less platform dependent.
clara(*, metric="gower")
is too buggy, and hence
removed for now, see below (2.1.5).
tweak ‘tests/fanny-ex.{R,Rout.save}’ for less "diffs".
pam()
and clara()
also accept a
logical
matrix as input.
clara()
gets new metric = "gower"
donated by
Kasper Fischer-Rasmussen.
— was removed in 2.1.6 because of valgrind-detected memory leaks
(and problems/bugs found earlier in R experiments).
renamed internal function silhouette.default.R
to silhouetteR
.
‘CITATION’ switched from old citEntry()
to bibentry()
.
clara(*, trace = <pos>)
prints slightly better info.
‘DESCRIPTION’ gets Enhances: for packages cross-referenced in ‘man/*.Rd’.
New medoids()
to compute pam
-consistent medoids,
given a clustering (and data).
help(dissimilarity.object)
now correctly describes the meaning of a method = "gower"
result type "T"
.
Also, help(daisy)
now extensively documents the different
options for type = *
, notably "ordratio"
and
"logratio"
.
pam(x, diss=TRUE)
uses inherits(x, "dissimilarity")
instead
of semi-deprecated data.class(x) == "dissimilarity")
to check.
Using deparse1()
from R version 4.0.0 and newer (even
when cluster is installed into an older versions of R),
e.g., in plot default titles.
as.data.frame(<silhouette>)
now works; suggested by
Jonathan Marshall (@Massey, NZ).
Updated German translations (Detlef Steuer)
use explicit cast, quieting -Wconversion
.
Updated the Italian translations (by Daniele Medri), the French (by Philippe Grosjean) and the German (by Detlef Steuer). New Lithuanian translations by Gabriele Stupuriene & Rimantas Zakauskas.
Added Italian translations from Daniele Medri, and updated the French ones from Philippe Grosjean.
clara()
gains a cluster.only
argument, entirely
“in parallel” to pam()
.
the silhouette()
method for clara
now allows
full
to be a number in [0,1] instead of just a logical and it gains
gains new optional argument subset
to specify the indices of
observations for which silhouette values shold be computed.
Faster pam()
- ‘fasterPAM’ from Erich Schubert.
New optional arguments medoids = "random"
, nstart
, and
variant
, notably variant = "faster"
.
volume(obj)
is now correct also for ellipsoids of
dimension d > 2
.
--enable-lto
compilation revealed missing
weights
argument in ‘src/cluster.h’'s declaration of
cldaisy()
.
Replaced many “old style” `<word>'
quotations.
‘src/mona.c’ now uses correct void F77_NAME
and source cleaned.
pam()
gets new pamonce
options, for values 3,
4, or 5, choosing versions of fastpam
, contributed by Erich
Schubert, Univ. Dortmund.
update ‘tests/*’ to work with R >= 3.6.0 (sample.kind)
correct thinko in ?clusGap
, the help page.
clara()
gets new option metric = "jaccard"
,
contributed by Kamil Kozlowski and Kamil Jadszko.
pam()
and clara()
use match.arg(metric)
and hence metric
can be abbreviated (and invalid strings
give an error instead of being interpreted as "euclidean"
).
The bug fix of clara(*, correct.d = TRUE)
(from
version 2.0.4) for the NA-data case now also applies to the
internal C function selec()
.
mona()
now C- instead of Fortran-based (having used
f2c etc) and now has a trace.lev
option which allows
progress reporting
“remembers” if the original data had missing values.
mona(<1-column>)
no longer loops infinitely but signals
an error.
clusGap()
gets a new option scaleH0
, and
scaleH0 = "original"
is an alternative to the default PCA
rotation.
clusGap()
now also stores its call
and uses
that for print()
ing and (by default in the main
title)
for plot()
ing "clusGap"
objects.
__ MOSTLY NOT IMPLEMENTED yet __
diana()
gets new optional argument stop.at.k
.
When a positive integer, the DIANA algorithm will stop early, as
much desirable for large n
.
daisy()
gets 3+1 new options warn*
which allow
to suppress three different kind of warnings, as these are
undesirable in some cases. With thanks to Kirill Müller for the
convincing context.
pam()
now signals an error when there are more than
65536 observational units (whereas it could segfault previously),
thanks to a patch from Mikko Korpela, Helsinki.
clusGap()
gets a new option d.power = 1
allowing to choose the basic weight statistic as it was originally
proposed, namely squared distances by setting d.power = 2
.
fix small glitch in silhouette's help page.
Finally fixed a bug (in the original Fortran code from
Rousseeuw!) in clara's distance computation when there are
NA
s in the data. As the fix is not backward compatible,
a warning is produced (for the time being) if there are
NA
s and the user does not explicitly use clara(*, correct.d = TRUE)
.
This new ‘NEWS.Rd’ file – going to replace ‘ChangeLog’ eventually.
import all we need (but not more) from the "base" pkgs (stats, graphics, ...).
using new anyNA()
where appropriate.
New Korean translations, thanks to Chel Hee Lee.
plotpart()
: cmdscale()
tweaks.
valgrind detected missing allocation (nisol["1"]
for k=1).
typo R/daisy.q (R bug PR#16430).
Fix silhouette( obj )
for obj <- pam(x, k = 1)
.
pam()
now using .Call()
instead of
.C()
is potentially considerably more efficient.
agnes()
has improved trace
behaviour; also,
some invalid par.method = *
settings now give an early and
understandable error message.
lower.to.upper.tri.inds()
(etc) now returns integer
.
.C(..)
and .Fortran(..)
: no longer using
DUP=FALSE
as that has become deprecated.
agnes()
and diana()
finally get, respectively
work with a trace.lev
option.
plot.(agnes|diana)()
now deals well with long
call
s, by using multiple title lines.
Message translations now also for C level error messages.
agnes(*, method="flexible", par.method = c(a1, a2, b, c))
,
i.e., length(alpha) == 4
, finally works correctly.
Rewrote parts of the R level messages so they are more easily translatable, thanks to proposals by Lukasz Daniel.
French translations from Philippe Grosjean.
mona
example not working in R < 3.0.x.
agnes(*, method = "gaverage")
contributed by Pierre
Roudier.
documentation improvements;
better translatable messages and translation updates.
2 de translations; update ‘mona.Rout.save’
Polnish translations from Lukasz Daniel.
Tweaks for translations.
Improve clusGap()
examples.
New clusGap()
to compute the “cluster Gap”
goodness-of-fit statistic.
Export coefHier()
as.dendrogram()
now for "twins"
, not just
"agnes"
.
First translations (into German, thanks to Detlef Steuer).
better citation("cluster")
plot.silhouette(..., col = <one per cluster>)
had
ordering bug.
Make clara()
more pam()
-like;
provide pamLike = *
option.
clusplot.default()
re-factored; use new
mkCheckX()
; new args add = FALSE
, cex
,
cex.txt
.
agnes( <n=1> )
: correct error now.
60 more CRAN releases of the package cluster
from Dec 1999 to Feb 2011, see also the ‘ChangeLog’ file and
svn log
.
Martin Maechler had its own version independently.
Both closely modeled after clus
the tarball off JSS.
agnes()
– ‘twins.f’ for the “twins” agnes
and diana
.
clara()
– clara.f
daisy()
– ‘daisy.f’ (and ‘meet.f’)
diana()
– (twins.f)
fanny()
– ‘fanny.f’
mona()
– ‘mona.f’
pam()
– ‘pam.f’
agriculture
animals
flower
ruspini
votes.repub
all Examples in ‘man/*.Rd’ hand edited to become executable.
summary()
, print()
(and
print.summary.**()
methods) for the six basic R functions above.
.
started ‘ChangeLog’