3

2 つの正方行列 A と B があります。両方とも、各エントリに 1 または 0 があります。以下に例を示します

A
channel
 id a b c
  1 1 1 1
  2 1 0 1
  3 1 0 0

B
       id
channel 1 2 3
  a     1 1 1
  b     1 0 0
  c     1 1 0

それらを増やしたい。ただし、 A%*%B の各要素が計算される時点で、合計は必要ありません。代わりに、各要素を OR して結果の合計を取得します。たとえば、行 = 2 と列 = 3 の要素を計算するには、典型的な行列の乗算では (1*1 + 0*1 + 0*0) = 1 を実行しますが、代わりに (1|1) + (0 |1) + (0|0) = 2. どうすればいいですか? 申し込み?プライヤー? よろしくお願いします。

4

1 に答える 1

3
 A <-scan()
1:   1 1 1
4:   1 0 1
7:   1 0 0
10: 
Read 9 items
 B<-scan()
1:        1 1 1
4:        1 0 0
7:        1 1 0
10: 
Read 9 items

 A<-matrix(A, 3, byrow=TRUE)
 B<-matrix(B, 3, byrow=TRUE)

0/1 の論理 OR は次と同じpmaxです。

pm <-  function(x,y) sum(pmax(A[x,],B[,y])) 
outer(1:3, 1:3, Vectorize(pm) )

     [,1] [,2] [,3]
[1,]    3    3    3
[2,]    3    2    2
[3,]    3    2    1
于 2013-08-06T03:41:56.323 に答える