1

私は2つの行列を持っています

A
2 1 0
0 1 6
1 0 0
B 
1 1 3
4 2 8
2 0 1

次の基準を満たす A と B を比較する要素を見つけたい:

if A[i,j] =0 and B[i,j]>0

だから私の結果行列は

C
0 0 3
4 0 0
0 0 1

を除いてこれを行う適切な方法は何for loopですか?

4

3 に答える 3

6

通常の論理演算子と算術演算子は、R の行列に対して要素ごとに機能し%*%ます。行列の乗算を行うのは、クロネッカー演算子とクロネッカー演算子だけです。さらに、"[" および "[<-" 関数を使用して行列にインデックスを付けることができます。

> C <- B
> C[!( A==0 & B >0) ] <- 0
> C
     [,1] [,2] [,3]
[1,]    0    0    3
[2,]    4    0    0
[3,]    0    0    1
于 2012-08-20T18:29:15.803 に答える
1

行列で単純な比較演算子を使用します。

以下を使用して、データを再作成します。

A <- as.matrix(read.table(text="
2 1 0
0 1 6
1 0 0"))

B <- as.matrix(read.table(text="
1 1 3
4 2 8
2 0 1"))

比較を実行します。

A==0 & B>0
        V1    V2    V3
[1,] FALSE FALSE  TRUE
[2,]  TRUE FALSE FALSE
[3,] FALSE FALSE  TRUE

そして、次を使用しますifelse

ifelse(A==0 & B>0, B, 0)
     V1 V2 V3
[1,]  0  0  3
[2,]  4  0  0
[3,]  0  0  1
于 2012-08-20T17:45:04.607 に答える