Define a generalized crossproduct and then apply it with the indicated function. Multiply the diagonal elements by zero as the sample output seems to be forcing them that way.
mm <- matrix(c(5, 1, 6, 6, 5, 7, 7, 3, 2), 3) # test matrix # generalized crossproduct inner <- function(a,b=a,f=crossprod) apply(b,2,function(x)apply(a,2,function(y)f(x,y))) inner(mm, f = function(x,y) length(intersect(x,y))) * !diag(ncol(mm)) On 7/15/06, Andrej Kastrin <[EMAIL PROTECTED]> wrote: > Hi, > > I have a matrix containing ID numbers in each column. I would like to > program function which calculate common number of ID numbers between > each pair of columns. > > Suppose: > > 5 6 7 > 1 5 3 > 6 7 2 > > Then the result should be: > > 0 2 0 > 2 0 1 > 0 1 0 > > The main problem is how to implement intersect() function to walk > through each pair of columns and write result to result matrix. > > Thanks in advance for any suggestion, Andrej > > ______________________________________________ > 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 > ______________________________________________ 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