[Rd] as.dist() too tolerant

Martin Maechler maechler at stat.math.ethz.ch
Mon Mar 8 10:37:48 MET 2004


The current documentation for  as.dist()  contains

>> Usage:
>> 
>>      as.dist(m, diag = FALSE, upper = FALSE)
>> 
>> 
>> Arguments:
>> 
>>        m: A matrix of distances to be converted to a '"dist"' object
>>           (only the lower triangle is used, the rest is ignored).

and indeed, as.dist(m) currently takes almost anything for which
as.matrix(m) works and returns its lower triangle without a
warning even in several non-sense situations, such as

- non-numeric
- non-square     
- non-symmetric matrices (or data frames eg.).

(where I can see arguments why it can be useful in this third case,
 to just ignore everything in the upper triangle)

E.g.,

  m <- cbind(1,7,1:4)
  cm <- paste(m,"p", sep="") ; dim(cm) <- dim(m) ; cm
  d <- as.dist(cm) ## --> no warning, but complete non-sense
  d # Printing now gives 
  ##  Error in df + t(df) : non-numeric argument to binary operator

So, adding something like  as.numeric(.) somewhere is definitely
wanted.
However, I wonder if we shouldn't also change the 
  "(only the lower triangle is used, the rest is ignored)"
part in the documentation and augment the code
by at least give warnings in some cases {e.g. the non-square ones}.

Opinions?

Martin Maechler <maechler at stat.math.ethz.ch>	http://stat.ethz.ch/~maechler/
Seminar fuer Statistik, ETH-Zentrum  LEO C16	Leonhardstr. 27
ETH (Federal Inst. Technology)	8092 Zurich	SWITZERLAND
phone: x-41-1-632-3408		fax: ...-1228			<><



More information about the R-devel mailing list