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

在R中遍历数据框列,从矩阵提取对应值添加新列

R语言批量从距离矩阵提取值到数据框

我正在使用R语言进行数据清洗与分析,现有数据框df结构如下:

Strain1 Strain2
p1      p2
p2      p3
p3      p4
p4      p5
p5      p1

以及距离矩阵distmat:

p1     p2     p3     p4     p5
p1     0      0.1    0.3     0.4    0.9
p2     0.1     0     0.5     0.1    0.6
p3     0.3    0.5     0      0.8    0.3
p4     0.4    0.1    0.8      0     0.2
p5     0.9    0.6    0.3     0.2     0

需要为df添加一列dist,根据每行的Strain1和Strain2,从distmat中提取对应位置的值填入,需处理超1000条数据,预期结果如下:

Strain1 Strain2 dist
p1      p2       0.1
p2      p3       0.5
p3      p4       0.8
p4      p5       0.2
p5      p1       0.9

解决方案

方法1:基础R向量化索引(高效推荐)

利用矩阵的双下标索引特性,直接通过cbind构造行/列索引对,一次性提取所有对应值。这种向量化操作无循环开销,处理1000+条数据速度极快:

df$dist <- distmat[cbind(df$Strain1, df$Strain2)]

方法2:tidyverse风格实现

如果习惯使用dplyr,可以结合rowwise逐行处理(1000条数据完全适用,适合熟悉tidy语法的用户):

library(dplyr)

df <- df %>%
  rowwise() %>%
  mutate(dist = distmat[Strain1, Strain2]) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:09:21