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

如何将双精度方阵重塑为含Genomes1、Genomes2、Value列的DataFrame?

解决方法

你需要将对称方阵转换为三列长格式DataFrame,核心是利用tidyverse工具链中的行名提取和宽转长函数,具体步骤如下:

基础转换(保留所有元素)

假设你的原始矩阵名为corr,执行以下代码:

library(tidyverse)

df <- corr %>%
  # 将矩阵转成tibble,同时把行名提取为Genomes1列
  as_tibble(rownames = "Genomes1") %>%
  # 将所有列(除Genomes1外)转为长格式,对应Genomes2和Value列
  pivot_longer(cols = -Genomes1, 
               names_to = "Genomes2", 
               values_to = "Value")

这段代码会直接生成你需要的三列结构:

  • Genomes1:原矩阵的行名
  • Genomes2:原矩阵的列名
  • Value:对应位置的矩阵元素值

可选:提取对称矩阵的三角部分(避免重复)

因为原矩阵是对称的,如果你只需要上三角(含对角线)或下三角数据,可以添加过滤步骤:

# 提取上三角(含对角线)
df_upper <- df %>%
  # 将基因组名称转为因子,保证顺序一致
  mutate(Genomes1 = factor(Genomes1, levels = unique(Genomes1)),
         Genomes2 = factor(Genomes2, levels = unique(Genomes1))) %>%
  # 过滤出Genomes1在因子顺序中位置小于等于Genomes2的行
  filter(as.integer(Genomes1) <= as.integer(Genomes2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:42:12