【发布时间】:2021-10-17 17:46:10
【问题描述】:
我是 R 新手,我想为我的矩阵计算组件 (CM) 的公共连接和唯一连接。
因此,我有一个组件(CM)和工作站(WS)矩阵。 为了计算公共连接,我想找出与其他组件相比哪个工作站(如矩阵所示)生产的组件。 公共连接 = 当 CM1 和 CM2 由同一工作站生产时 唯一连接 = 当 CM1 由工作站生成而 CM2 不是时。
Example
WS1 WS2 WS3 WS4 WS5 WS6 WS7 WS8 WS9 WS10
CM1 1 0 1 1 1 1 1 1 0 0
CM2 0 1 0 0 0 1 1 1 0 0
CM3 1 0 0 1 1 0 1 0 0 1
CM4 0 1 1 1 1 0 1 1 1 1
CM5 1 0 0 1 0 0 0 1 0 1
CM6 0 1 0 1 0 0 0 0 1 0
CM7 0 1 1 1 1 1 1 0 1 1
CM8 1 0 0 1 1 1 1 1 1 0
CM9 1 0 0 1 1 1 0 1 1 0
CM10 1 1 0 0 1 0 0 1 0 0
我需要一个函数,它将一行的每个元素(例如:CM1)与另一行(例如:CM2)进行比较。例如,如果 CM1[6] & CM2[6] >= 1,则要形成总和。例如,CM1_2 的公共连接为 3。此外,我还需要这个用于不常见的连接,而 CM1[1] >0 & CM[2] == 0。
对于向量,它应该像这样工作:
a = CM1 #as a vector
b = Cm2 #as a vector
common <- sum(a&b >=1) #common connection
only_inCM1 <- sum(a >0 & b ==0) #unique connections
only_inCM2 <- sum(b >0 & a ==0)
我当前的问题是创建常见和不常见连接的所有组合。所以函数需要比较 CM1 和 CM2,CM1 和 CM3...直到 CM10 和 CM9,计算公共连接和唯一连接,然后对于每次比较(如 CM1_2),它应该在顶部应用函数 C[n] .
C[n] = 100 * common_connection/ common_connection + 唯一连接
最后,我想计算所有组件的 C[n] 的总和除以组件的数量。要有一个通用的索引。
CM1 和 CM2 示例
WS1 WS2 WS3 WS4 WS5 WS6 WS7 WS8 WS9 WS10
CM1 1 0 1 1 1 1 1 1 0 0
CM2 0 1 0 0 0 1 1 1 0 0
common connection CM1_2 = 3
only in CM1 = 4
only in CM2 = 1
C[1,2] = 100 * 3 / 3+4 = 42,85 # Index for CM1
C[2,1] = 100* 3 / 3+1 = 75 # Index for CM2
C = (C[1,2] + C[2,1]) / 2 = (42,85 + 75)/2 = 58,87
我希望你有一个建议或提示帮助我,非常感谢提前:)
【问题讨论】:
-
您需要的命令是
combn。使用?combn查看它的帮助页面
标签: r matrix combinations