Dear Alexey,

You can use outer(), as follows:

> group <- c(1, 2, 1, 1, 3)

> matrix(as.numeric(outer(group, group, "==")), 5, 5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    1    1    0
[2,]    0    1    0    0    0
[3,]    1    0    1    1    0
[4,]    1    0    1    1    0
[5,]    0    0    0    0    1
>

If a logical result will do, the expression is even simpler:

> outer(group, group, "==")
      [,1]  [,2]  [,3]  [,4]  [,5]
[1,]  TRUE FALSE  TRUE  TRUE FALSE
[2,] FALSE  TRUE FALSE FALSE FALSE
[3,]  TRUE FALSE  TRUE  TRUE FALSE
[4,]  TRUE FALSE  TRUE  TRUE FALSE
[5,] FALSE FALSE FALSE FALSE  TRUE

I hope that this helps,
 John

At 10:49 AM 11/11/2003 +0000, Alexey Shipunov wrote:
Dear R experts,

I have a matrix (from some sort of
classification) like this:

      object  group
 [1,] 1       1
 [2,] 2       2
 [3,] 3       1
 [4,] 4       1
 [5,] 5       3

And I need something like this:

      [,1] [,2] [,3] [,4] [,5]
 [1,] 1    0    1    1    0
 [2,] 0    1    0    0    0
 [3,] 1    0    1    1    0
 [4,] 1    0    1    1    0
 [5,] 0    0    0    0    1

where all zeros mean that these objects are not
in same group, and vice versa.

Is there a relatively simple way to construct co-
uccurence matrices of type shown above?

Any help would be appreciated,


----------------------------------------------------- John Fox Department of Sociology McMaster University Hamilton, Ontario, Canada L8S 4M4 email: [EMAIL PROTECTED] phone: 905-525-9140x23604 web: www.socsci.mcmaster.ca/jfox

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to