Я пытаюсь вычислить меры близости между парами научных статей. Когда 2 автора бумаги A живут в Амстердаме и 1 в Нью-Йорке, а 3 автора газеты B живут в Амстердаме, я хочу, чтобы результат был 3 + 2 = 5. У меня две большие матрицы, где столбцы представляют собой бумаги и строки, представляющие города. Например:суммирование перекрытия в двух матрицах
: матрицы А
A1 A2
Дэвис, Калифорния, США .
LOS ANGELES, CA USA . Пало-Альто, Калифорния, США . Sacramento, Калифорния, США .
SANTA MONICA, CA USA .
и MatrixB:
B1
DAVIS, Калифорния, США Лос-Анджелес, Калифорния, США Пало-Альто, Калифорния, США .
Сакраменто, Калифорния, США SANTA MONICA, CA USA
векторное произведение из двух (матрицы А% *% т (MatrixB)) приближается к тому, что Я хочу. Это было бы дать мне, для A2-B1,
(0 * 1) + (1 * 2) + (1 * 0) + (0 * 1) + (2 * 2) = 6
но то, что я хочу это:
(0 * 1) + (1 + 2) + (1 * 0) + (0 * 1) + (2 + 2) = 7
Так размножаются, когда один это 0, иначе добавить. Есть ли эффективный (!) Способ достичь этого, используя R?
Отформатируйте свои наборы данных – akrun
matrixA is 5 * 2 и t (matri xB) составляет 1 * 5, это означает (MatrixA% *% t (MatrixB)) выдает ошибку. – cryptomanic
@ криптомании True. crossprod (x = MatrixA, y = MatrixB). –