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

如何用R语言一行代码将矩阵上三角替换为下三角并保留对角线?

一行代码实现下三角复制到上三角并保留对角线

有两种简洁的一行代码方案可以满足需求,同时完整保留矩阵的对角线:

方案一:直接替换上三角元素

用upper.tri()定位上三角区域(不含对角线),直接将这些位置的元素替换为原矩阵下三角的对应值:

mat[upper.tri(mat)] <- t(mat)[upper.tri(mat)]

方案二:调整三角矩阵的对角线参数

基于你原来的代码修改,给其中一个lower.tri()加上diag = TRUE参数,让它包含对角线,确保最终结果保留原矩阵的对角线:

mat <- t(lower.tri(mat) * mat) + mat * lower.tri(mat, diag = TRUE)

简单说明

  • 方案一逻辑更直接:只修改上三角区域,对角线完全不受影响,直接保留原矩阵的对角线元素。
  • 方案二是对原有代码的优化:通过让其中一个三角矩阵包含对角线,合并时自然保留了原矩阵的对角线,同时完成下三角到上三角的复制。

内容的提问来源于stack exchange,提问作者Aku-Ville Lehtimäki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:40:24