2016-06-01 2 views
-1

행렬로 다시 정렬합니다. 이와 같이 보입니다. 정사각형입니다매트릭스를 R

structure(c(3, 4, 2, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 
    0, 0, 0, 2, 2, 0, 3, 9), .Dim = c(5L, 5L), .Dimnames = list(c("a1", 
    "a2", "a3", "a4", "a5"), c("a1", "a2", "a3", "a4", "a5"))) 

삼각형 아래 및 위쪽 요소를 더하고 행렬의 위쪽 삼각형을 비워야합니다. 결과는 다음과 같습니다.

  structure(c(3, 4, 2, 4, 2, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 3, 0, 0, 0, 0, 9), .Dim = c(5L, 5L), .Dimnames = list(c("a1", 
"a2", "a3", "a4", "a5"), c("a1", "a2", "a3", "a4", "a5"))) 

효과적인 방법은 무엇입니까?

+0

없이, m [3,2] 및 m [2의 차이에서 찾아보세요 시도 할 수 있습니다 - 그래서 그냥 요소의 하단에서 하부 및 상부 절반의 값 UPT 추가 , 3] - 요소가 2와 1로 합산됩니다 - 3 – kutyw

+0

아래 해결 방법을 확인하십시오. 예상되는 결과를 제공합니다. – akrun

답변

0

우리는

m1[lower.tri(m1)] <- m1[lower.tri(m1)] + t(m1)[lower.tri(m1)] 
m1[upper.tri(m1)] <- 0 
identical(m1, m2) 
#[1] TRUE 
+0

그래서 우리는 당신의 솔루션 matr [row.names (m1), colnames (m1)] <- matr [row.names (m1), colnames (m1)] + m1을 이전 질문의 right- 전체 행렬을 얻은 다음 요약 해 주시겠습니까? – kutyw

+0

@kutyw 나는 희망한다. 그러나 이것은 현재의 질문에 대한 대답이다. 이 질문에 대해 효과가 있으면 투표 옆에있는 체크 표시를 클릭하여 해결책을 수락하십시오. – akrun

+0

대각선을 사용하는 코드는 무엇입니까? 그것을 0으로 설정하고 있습니까? 왜냐하면 대각선은 R> – kutyw

관련 문제