3

我有两个方阵 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。我该怎么做?申请?plyr? 提前非常感谢。

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 回答