如何生成参考图所示同时包含正负值的距离矩阵?
实现步骤
核心原理
dist() 函数默认输出的是对称的非负距离结果,要实现上三角正、下三角负的效果,只需将返回的dist对象转为普通矩阵,分别对上下三角区域做正负赋值即可,无需导入外部数据集,可以直接用随机生成数据或R内置数据集完成。
完整代码示例
# 1. 生成测试数据(无需导入外部数据集,这里随机生成10个5维样本,也可替换为内置数据集如iris[,1:4]) set.seed(123) # 固定随机种子方便结果复现 test_data <- matrix(rnorm(50), nrow = 10, ncol = 5) # 2. 计算基础距离并转为矩阵 dist_obj <- dist(test_data, diag = TRUE, upper = TRUE) full_mat <- as.matrix(dist_obj) # 3. 分别设置上下三角的正负值 full_mat[upper.tri(full_mat)] <- abs(full_mat[upper.tri(full_mat)]) # 上三角为正 full_mat[lower.tri(full_mat)] <- -abs(full_mat[lower.tri(full_mat)]) # 下三角为负 # 对角线默认保留0,如有需求可自行调整 # 查看最终结果 print(full_mat)
补充说明
如果需要使用内置数据集测试,只需把第一步的test_data替换为内置数据的数值列即可,例如替换为 test_data <- mtcars[,1:7] 就能直接用mtcars数据集计算,无需额外导入文件。
内容的提问来源于stack exchange,提问作者Chi Hyung Park
相关产品推荐
相关产品推荐

