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 TRUEI 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
