Well, as I did not get a satisfactory reply to the original question I tried to make a basic function that, I find, solve the question.
I think it is not the better function, but it is working. So, perhaps it can be useful to other people. # # Calculate the matrix of Mahalanobis Distances between groups # from data.frames # # by: José Cláudio Faria # date: 10/7/05 13:23:48 # D2Mah = function(y, x) { stopifnot(is.data.frame(y), !missing(x)) stopifnot(dim(y)[1] != dim(x)[1]) y = as.matrix(y) x = as.factor(x) man = manova(y ~ x) E = summary(man)$SS[2] #Matrix E S = as.matrix(E$Residuals)/man$df.residual InvS = solve(S) mds = matrix(unlist(by(y, x, mean)), byrow=T, ncol=ncol(y)) colnames(mds) = names(y) Objects = levels(x) rownames(mds) = Objects library(gtools) nObjects = nrow(mds) comb = combinations(nObjects, 2) tmpD2 = numeric() for (i in 1:dim(comb)[1]){ a = comb[i,1] b = comb[i,2] tmpD2[i] = (mds[a,] - mds[b,])%*%InvS%*%(mds[a,] - mds[b,]) } # Thanks Gabor for the below tmpMah = matrix(0, nObjects, nObjects, dimnames=list(Objects, Objects)) tmpMah[lower.tri(tmpMah)] = tmpD2 D2 = tmpMah + t(tmpMah) return(D2) } # # To try # D2M = D2Mah(iris[,1:4], iris[,5]) print(D2M) Thanks all for the complementary aid (specially to Gabor). Regards, -- Jose Claudio Faria Brasil/Bahia/UESC/DCET Estatistica Experimental/Prof. Adjunto mails: [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] tel: 73-3634.2779 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html