У меня есть W
, который представляет собой двоичную разреженную матрицу из 4 миллионов строк. Я использую пакет Matrix. Я хотел бы иметь возможность вычислить следующее:
W2 = W %*% W #W2 becomes a dgCMatrix
W2@x[ W2@x > 1 ] = 1
W2 = W2 - W
W2@x[ W2@x < 0 ] = 0
К сожалению, третья строка в этой операции полностью портит мой компьютер. Я могу вычислить строки (1) и (2) просто отлично, но когда я пытаюсь вычислить строку (3), R требует гораздо больше оперативной памяти, чем у меня есть. Я уверен, что W2 - W
"более редкий", чем W2
один.
Есть ли какой-нибудь алгоритм в векторной форме, который позволяет обнулить позиции W2
, равные 1 в W
? Есть ли эффективный способ реализовать это в R?