You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言对矩阵所有行组合应用函数计算公共与独有连接

R语言实现组件连接指标计算方案

核心实现思路

  • 首先生成所有两两不重复的组件(行)组合,避免重复计算同一对组件的指标
  • 对每一组的两个行向量,按给定逻辑计算公共连接数、两个组件各自的独有连接数
  • 分别计算每对组件的两个C值,累加所有C值后除以总C值数量(每对贡献2个C值),得到总体通用指标
  • 额外增加分母为0的异常判断,避免某组件无对应生产工作站时出现计算错误

完整代码实现

第一步:构造示例矩阵

# 构造你给出的示例矩阵
cm_mat <- matrix(
  c(1,0,1,1,1,1,1,1,0,0,
    0,1,0,0,0,1,1,1,0,0,
    1,0,0,1,1,0,1,0,0,1,
    0,1,1,1,1,0,1,1,1,1,
    1,0,0,1,0,0,0,1,0,1,
    0,1,0,1,0,0,0,0,1,0,
    0,1,1,1,1,1,1,0,1,1,
    1,0,0,1,1,1,1,1,1,0,
    1,0,0,1,1,1,0,1,1,0,
    1,1,0,0,1,0,0,1,0,0),
  nrow = 10, byrow = TRUE,
  dimnames = list(paste0("CM",1:10), paste0("WS",1:10))
)

第二步:编写计算函数

calculate_c_metric <- function(mat) {
  n_row <- nrow(mat)
  # 生成所有不重复的两两行组合
  pair_list <- combn(n_row, 2)
  total_c <- 0
  
  for (idx in 1:ncol(pair_list)) {
    i <- pair_list[1, idx]
    j <- pair_list[2, idx]
    vec_i <- mat[i, ]
    vec_j <- mat[j, ]
    
    # 计算三个核心指标
    common_conn <- sum(vec_i & vec_j >= 1)
    only_i <- sum(vec_i > 0 & vec_j == 0)
    only_j <- sum(vec_j > 0 & vec_i == 0)
    
    # 计算两个C值,避免分母为0
    c_ij <- ifelse(common_conn + only_i == 0, 0, 100 * common_conn / (common_conn + only_i))
    c_ji <- ifelse(common_conn + only_j == 0, 0, 100 * common_conn / (common_conn + only_j))
    
    total_c <- total_c + c_ij + c_ji
  }
  # 计算总体平均C值
  overall_avg <- total_c / (n_row * (n_row - 1))
  return(overall_avg)
}

第三步:运行验证

# 运行计算
overall_result <- calculate_c_metric(cm_mat)
print(overall_result)

# 验证CM1和CM2的单组计算是否符合示例
vec1 <- cm_mat["CM1", ]
vec2 <- cm_mat["CM2", ]
common <- sum(vec1 & vec2 >= 1)
only1 <- sum(vec1 > 0 & vec2 == 0)
only2 <- sum(vec2 > 0 & vec1 == 0)
c12 <- 100 * common/(common + only1)
c21 <- 100 * common/(common + only2)
cat("CM1-CM2的平均C值为", mean(c(c12, c21)))

性能优化建议

如果你的矩阵行数很大(超过100行),可以将循环逻辑替换为向量化运算,直接通过矩阵乘法计算公共连接数矩阵,再批量计算独有连接数,运算效率会提升数倍。

内容的提问来源于stack exchange,提问作者svoxv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:54:07