Crear una matriz de co-ocurrencia a partir de observaciones codificadas ficticias

¿Existe un enfoque simple para convertir un marco de datos con variables ficticias sobre si un aspecto está presente, en una matriz de co-ocurrencia que contiene los recuentos de dos aspectos que ocurren?

P.ej. pasando de esto

X <- data.frame(rbind(c(1,0,1,0), c(0,1,1,0), c(0,1,1,1), c(0,0,1,0)))
X
  X1 X2 X3 X4
1  1  0  1  0
2  0  1  1  0
3  0  1  1  1
4  0  0  1  0

a esto

   X1 X2 X3 X4
X1  0  0  1  0
X2  0  0  2  1
X3  1  2  0  1
X4  0  1  1  0

Respuestas a la pregunta(1)

Su respuesta a la pregunta