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

如何在R中提取种间遗传距离并保留矩阵结构?

保留矩阵结构提取遗传距离矩阵中的种间距离

要保留原矩阵结构提取种间距离,不需要用na.omit把元素转成向量,直接对矩阵进行赋值操作即可——把同种个体的位置(含对角线)和上三角区域设为NA,只保留下三角的种间距离数值,同时维持原矩阵的维度和结构。

方案一:基于你已有的代码修改

# install.packages("ape")
library(ape)

data(woodmouse)
dists <- dist.dna(woodmouse, model = "raw", as.matrix = TRUE)

# 将上三角(不含对角线)设为NA,保留下三角
dists[upper.tri(dists, diag = FALSE)] <- NA

labs <- labels(woodmouse)
# 生成标记"是否为同种"的逻辑矩阵
res <- outer(labs, labs, "==")

# 创建结果矩阵,将同种位置设为NA,保留种间距离的矩阵结构
interspecific_dists <- dists
interspecific_dists[res] <- NA

方案二:一步到位简化代码

可以合并上三角处理和同种标记的逻辑,直接生成目标矩阵:

# install.packages("ape")
library(ape)

data(woodmouse)
dists <- dist.dna(woodmouse, model = "raw", as.matrix = TRUE)
labs <- labels(woodmouse)

# 同时标记"上三角区域"和"同种个体"的位置,统一设为NA
res <- outer(labs, labs, "==")
interspecific_dists <- dists
interspecific_dists[upper.tri(dists, diag = FALSE) | res] <- NA

结果说明

最终的interspecific_dists和原dists维度完全一致:

  • 下三角区域仅保留不同种个体间的遗传距离数值
  • 上三角区域、同种个体对应位置(含对角线)均为NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:00:58