R乘以矩阵:但具有特殊功能

时间:2013-08-06 03:13:19

标签: r plyr apply

我有两个方形矩阵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? 非常感谢。

1 个答案:

答案 0 :(得分: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