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

如何在R中编写函数生成数据框的距离相关系数矩阵?

R语言计算距离相关系数矩阵

实现思路

要生成数据框中所有变量的距离相关矩阵,核心是利用energy包的dcor()函数计算两两变量的距离相关系数,同时构建对称矩阵(对角线为1,因为变量与自身的距离相关系数恒为1),最后格式化输出保留两位小数。

完整代码实现

# 加载所需包
library(energy)

# 定义计算距离相关矩阵的函数
dcor_matrix <- function(data) {
  # 获取数据框的变量名称
  var_names <- colnames(data)
  var_count <- length(var_names)
  
  # 初始化对称矩阵,设置行名和列名
  corr_mat <- matrix(nrow = var_count, ncol = var_count, 
                     dimnames = list(var_names, var_names))
  
  # 对角线元素设为1(变量与自身的距离相关系数为1)
  diag(corr_mat) <- 1
  
  # 遍历所有变量对,计算距离相关系数并填充矩阵
  for (i in 1:(var_count - 1)) {
    for (j in (i + 1):var_count) {
      corr_val <- dcor(data[[i]], data[[j]])
      corr_mat[i, j] <- corr_val
      corr_mat[j, i] <- corr_val
    }
  }
  
  # 保留两位小数,匹配输出格式
  return(round(corr_mat, 2))
}

# 测试数据框
Z <- data.frame(Z1 = c(0.2, 3, 0.01, 3.4, 6),
                Z2 = c(2.2, 3.5, 0.5, 0.3, 7.0),
                Z3 = c(4.7, 0.003, 1.4, 0, 0.6))

# 调用函数并输出结果
dcor_matrix(Z)

运行结果

执行上述代码后,会输出符合要求的矩阵:

Z1   Z2   Z3
Z1 1.00 0.76 0.76
Z2 0.76 1.00 0.48
Z3 0.76 0.48 1.00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:08