2014-03-04 7 views
1

두 개의 행렬 A와 B를가집니다. 행렬 B는 두 행의 행렬입니다. 각 행에는 행렬 A의 요소 색인이 하나씩 들어 있습니다. 행렬 A의 요소를 변경하려고합니다. 행렬 B의 각 행에 의해 색인됩니다 , 0으로.다른 매트릭스에서 색인 된 하나의 매트릭스에서 요소를 변경하는 방법은 무엇입니까?

아래에 표시된 루프를 사용하지 않는 방법이 있습니까?

> A <- matrix(1:12, 3, 4) 
> B <- matrix(c(1, 2, 2, 2, 3, 4), byrow = TRUE, ncol = 2) 
> A 
    [,1] [,2] [,3] [,4] 
[1,] 1 4 7 10 
[2,] 2 5 8 11 
[3,] 3 6 9 12 
> B 
    [,1] [,2] 
[1,] 1 2 
[2,] 2 2 
[3,] 3 4 
> for (i in 1:nrow(B)) { 
+  A[B[i, 1], B[i, 2]] <- 0 
+ } 
> A 
    [,1] [,2] [,3] [,4] 
[1,] 1 0 7 10 
[2,] 2 0 8 11 
[3,] 3 6 9 0 

답변

3

는 솔직히이 일 것이라고 생각하고 있지 않습니다

A[B] <- 0; 
+0

처럼 이루어집니다. 굉장해! – stanekam

+0

실제로 하위 집합의 좋은 방법입니다. '? ['/'Details' /'Matrices and arrays'에서 더 많은 것을 읽을 수 있습니다. – Henrik

+0

그렇게 생각하지 마십시오. 고마워요! –

관련 문제