[R] A co-occurrence matrix
John Fox
jfox at mcmaster.ca
Tue Nov 11 13:39:09 CET 2003
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: jfox at mcmaster.ca
phone: 905-525-9140x23604
web: www.socsci.mcmaster.ca/jfox
More information about the R-help
mailing list