Macierz interakcji parami w R

Próbuję obliczyć macierz par w R, która zlicza liczbę interakcji jednostek z innymi osobami (więc macierz będzie zawierać N liczby wierszy i kolumn odpowiadających liczbie jednostek). Mam ramkę danych, która zawiera listę „aktorów” i „partnerów” w osobnych kolumnach.

nn <- data.frame(actors=c('DOL','DOL','DOL','DOL','DOL','NOR','NOR','NOR','NIN','JOJ'),partners=c('JOJ','JOJ','NOR','NOR','NIN','NIN','DOL','JOJ','NOR','NOR'))

Dane są takie, że kierunek interakcji jest nieistotny, więc każda komórka powinna policzyć, ile razy pojedynczy X działa na Y plus liczbę razy, gdy Y działa na X. Idealnie, ramka danych powyżej powinna dać matrycę, która wygląda tak :

     DOL JOJ NOR NIN
DOL    0   2   3   1
JOJ    2   0   2   0
NOR    3   2   0   2
NIN    1   0   2   0

Zacząłem pisać pętlę, aby przechodzić przez każdą osobę w moim zbiorze danych i liczyć jego / jej interakcje zarówno od aktora-> partnera, jak i partnera-> aktora. Jestem pewien, że to zadziała, ale nie jest idealne, ponieważ pełny zestaw danych jest dość duży. Czy jest lepszy sposób?

Aktualizacja: Dziękuję za odpowiedzi! Oba rozwiązania działają świetnie! Zamieszczam moją implementację sugestii Josha, co było bardzo pomocne.

x <- with(nn, table(actors, partners))
y <- t(x)

# unique individuals
u <- unique(c(rownames(x),colnames(x)))

m <- matrix(0,ncol=length(u),nrow=length(u),dimnames=list(u,u))

i1 <- as.matrix(expand.grid(rownames(x),colnames(x)))
i2 <- as.matrix(expand.grid(rownames(y),colnames(y)))

m[i1] <- x[i1]
m[i2] <- m[i2] + y[i2]

questionAnswers(2)

yourAnswerToTheQuestion