이 간단한 매트릭스 곱셈이다.
m = read.table(text = "ID a b c d e
1 1 0 1 0 0
2 0 1 1 0 0
3 0 0 1 1 0
4 1 1 0 0 0", header = T)
m = as.matrix(m[, -1])
이 단지 1과 0 인 원래의 행렬에 의존한다 :
t(m) %*% m
a b c d e
a 2 1 1 0 0
b 1 2 1 0 0
c 1 1 3 1 0
d 0 0 1 1 0
e 0 0 0 0 0
이 데이터를 사용. 그렇지 않은 경우, 당신은 m = original_matrix > 0
여기
가 당신 같은 행렬에 일하고있어 그것을 만들 수 있습니다 설명 : 내 노트북에
library(Matrix)
nr = 2e6
nc = 70
mm = Matrix(0, nrow = nr, ncol = nc, sparse = T)
# make, on average, three 1s per row
set.seed(47)
mm[cbind(sample(nr, size = 3 * nr, replace = T), sample(nc, size = 3 * nr, replace = T))] = 1
system.time({res = t(mm) %*% mm})
# user system elapsed
# 0.836 0.057 0.895
format(object.size(res), units = "Mb")
[1] "0.1 Mb
는 계산이 초 미만 소요되며 결과는 약 0.1 Mb.
작은 재현 가능한 예를 게시 할 수 있습니까? 복사/붙여 넣기가 가능한 것이 가장 좋습니다. 샘플 입력을 생성하기 위해 코드를 공유하십시오 ('dput()'이 유용 할 수 있습니다). 그리고 그 입력에 대해 원하는 출력을 보여줍니다. – Gregor
확실합니다. 방금 게시했습니다. 감사합니다 – user40076