R에서 희소 행렬의 0이 아닌 위쪽 삼각형 요소의 목록/벡터/배열을 검색하는 효율적인 방법을 찾으려고합니다. 예를 들어 :희소 행렬의 상위 삼각형이 아닌 0 요소를 가져 오기 R
library(igraph)
Gmini <- as.directed(graph.lattice(c(3,5)))
GminiMat <- sparseMatrix(i=get.edgelist(Gmini)[,1],j=get.edgelist(Gmini)[,2],x=1:length(E(Gmini)))
GminiMat
15 x 15 sparse Matrix of class "dgCMatrix"
[1,] . 1 . 2 . . . . . . . . . . .
[2,] 23 . 3 . 4 . . . . . . . . . .
[3,] . 25 . . . 5 . . . . . . . . .
[4,] 24 . . . 6 . 7 . . . . . . . .
[5,] . 26 . 28 . 8 . 9 . . . . . . .
[6,] . . 27 . 30 . . . 10 . . . . . .
[7,] . . . 29 . . . 11 . 12 . . . . .
[8,] . . . . 31 . 33 . 13 . 14 . . . .
[9,] . . . . . 32 . 35 . . . 15 . . .
[10,] . . . . . . 34 . . . 16 . 17 . .
[11,] . . . . . . . 36 . 38 . 18 . 19 .
[12,] . . . . . . . . 37 . 40 . . . 20
[13,] . . . . . . . . . 39 . . . 21 .
[14,] . . . . . . . . . . 41 . 43 . 22
[15,] . . . . . . . . . . . 42 . 44 .
그래서 이상적으로는 함수 getUpper (매트) 등이 getUpper (GminiMat) 이 1시 22분의 벡터 (GminiMat의 상단 삼각 비 - 제로 항목)을 얻을 것
을하고 싶습니다이상적으로는 신청해야 할 수도 있기 때문에 상당히 기억이 빠르고 효율적인 방법이 필요합니다. 대형 시스템 (예. 행렬은 각 차원에서 수 백 개의 노드가있는 다차원 격자에서 나올 수 있습니다).
'upper.tri'이 다시주는 당신이 – infominer
찾고있다 사실과 거짓의 가면이지만 실제로 항목을 추출하는 데는 조금 더 걸리는 것처럼 보입니다. 더 큰 문제는 매트릭스가 더 이상 희박하지 않기 때문에 스파 스 매트릭스를 사용해야하는 장소 (예 : 매우 큰 시스템 크기의 경우)에서 실행 가능하지 않습니다. – wmsmith
당신은'x [upper.tri (x)]'를해야 할 것입니다. 그러나'upper.tri (x)'는 풀 (파싱되지 않은) 행렬이기 때문에 나쁜 생각입니다. 그래서 처음에는 희소 행렬을 사용하는 목적을 무효로 만듭니다. 속도가 느려서 큰 행렬을 사용하는 경우 메모리가 부족해질 수 있습니다. 'summary' (또는 이에 상응하는 희소 표현)에 대한 작업이 필요합니다. – flodel