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