Jari Oksanen <jari.oksanen <at> oulu.fi> writes: > > Marc Moragues <Marc.Moragues <at> scri.ac.uk> writes: > > > > > Hi, > > > > I am trying to calculate a distance matrix on a binary data frame using > > dist.binary() {ade4}. This is the code I run and the error I get: > > > > > sjlc.dist <- dist.binary(as.data.frame(data), method=2) #D = (a+d) / > > (a+b+c+d) > > Error in if (any(df < 0)) stop("non negative value expected in df") : > > missing value where TRUE/FALSE needed > > > > I don't know if the problem are the missing values in my data. If so how > > can I handle them? > > > Dear Marc Moragues, > > At least adding NA to a data.frame gave the same error message as you report > above. Odds are good for NA being responsible (but we cannot know: we only > guess). ...clip... > One solution is to use function designdist in vegan where you can with some > acrobary design your own dissimilarity indices.
It is a bad habit to comment on yourself, but if you write stupid things, you should tell so: that designdist() "handles" missing values is accidental, unintentional and dangerous. Now you still should figure out *how* they are handled, and the function should warn users if they supply data with missing values. I hope that will be changed. >Function designdist uses > different notations, because its author hates that misleading and dangerous > 2x2 > contingency table notation. The following, however, seems to define the same > index as ade4: > > designdist(data, "sqrt(1-(2*J+P-A-B)/P)") > You can make this cuter: designdist(data, "sqrt((A+B-2*J)/P)") Cheers, Jari Oksanen ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.