У меня есть фрейм данных, который выглядит немного, как показано в следующем коде (но гораздо больше)
set.seed(10)
mat <- matrix(rbinom(200, size=1, prob = .5), ncol = 10)
В столбцах есть проблемы, а 1 указывает, что наблюдение заинтересовано в конкретной проблеме. Я хочу создать сеть, сравнивающую все наблюдения и подсчитывающую количество проблем, в которых совместно участвует каждая диада.
Я создал следующий код, который, кажется, работает нормально:
mat2 <- matrix(NA,20,20)
for(i in 1:nrow(mat)){
for(j in 1:nrow(mat)){
mat2[i,j] <- sum(as.numeric(mat[i,]==1) + as.numeric(mat[j,]==1) == 2)
}
}
Таким образом, я сравниваю каждую запись с каждой другой записью, и только если у обеих есть 1 запись (то есть, они заинтересованы), то эта сумма равна 2 и будет учитываться как совместный интерес к теме.
Моя проблема в том, что мой набор данных очень большой, и цикл теперь работает уже несколько часов.
У кого-нибудь есть идеи, как это сделать, избегая петли?