2016-07-06 2 views
0

더 작은 매트릭스의 위쪽 삼각형을 더 큰 매트릭스의 인덱스로 전달할 때 나는 결과를 이해하지 못합니다.매트릭스에서 여러 인덱스 꺼내기

이 기술은이 질문에 대한 답변에서 사용됩니다 Create a Correlation Matrix From a Correlation Vector in R (참고 :. 링크 된 게시물에, 매트릭스 크기 내 예제에서 그렇지 않은 반면 동일) 아래의 첫 번째 예에서

, 왜 10은 인쇄되고 다른 값은 인덱스> [2,2]에 인쇄되지 않습니까? 나는 [1,2]의 값만 인쇄 될 것이라고 생각했을 것이다. 출력해야 기대했던에

largeMatrix <- matrix(1:12, ncol=2, byrow=TRUE) 

largeMatrix 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 
[3,] 5 6 
[4,] 7 8 
[5,] 9 10 
[6,] 11 12 

smallMatrix <- matrix(1:4, ncol=2, byrow=TRUE) 

smallMatrix 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 

upperTriangleSmall <- upper.tri(smallMatrix) 

upperTriangleSmall 
     [,1] [,2] 
[1,] FALSE TRUE 
[2,] FALSE FALSE 


largeMatrix[upperTriangleSmall] 
[1] 5 2 10 

내 생각은 :

Either: 

2 

Or: 

2 5 6 7 8 9 10 

같은 크기의 다른 매트릭스 인덱스와 같은 매트릭스의 상단 삼각형을 통과, 나는 결과를 이해합니다.

smallMatrix <- matrix(1:4, ncol=2, byrow=TRUE) 

smallMatrix 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 


newSmallMatrix <- matrix(7:10, ncol=2, byrow=TRUE) 

newSmallMatrix 
    [,1] [,2] 
[1,] 7 8 
[2,] 9 10 

newSmall[upperTriangleSmall] 
[1] 8 
+0

그런 생각은하지 않았지만 내 질문은 여전히 ​​의미합니다. 나는 인덱스로서 불리언 행렬을 전달할 것이지만 아직 인쇄 된 색인이 인쇄 된 이유 (업데이트 된 질문)를 이해하지 못합니다. – AfterWorkGuinness

답변

1

당신은 예를 들어, 하나의 인덱스 행렬에 액세스하는 경우 당신이 밖으로 찾을 수 있습니다, 행렬 요소가 열을 기준으로 색인 벡터에 행렬을 변환하는 경우는, largeMatrix[1]1을 제공, 더 볼 수 있습니다 largeMatrix[2]주는 3 등 :

as.vector(largeMatrix) 
# [1] 1 3 5 7 9 11 2 4 6 8 10 12 

as.vector(upperTriangleSmall) 
# [1] FALSE FALSE TRUE FALSE 

그래서 그것이 무엇을하면 재활용됩니다, 두 행렬의 길이가 동일하지 않기 때문에, 네 가지 요소의 각 블록의 세 번째 요소를 선택하고 5, 2, 10을 선택합니다.

+0

R은 내부적으로 어떤 요소를 선택할지 결정하는 역할을합니까? – AfterWorkGuinness

+1

내부 구현이 확실하지 않습니다. 그러나 많은 매너에서, 행렬은 마치 하나의 벡터처럼 동작합니다. 예를 들어, 그 요소는 해답에서 설명한 것처럼 단일 색인을 통해 액세스 할 수 있습니다. – Psidom