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

如何为数据框df的肽段组匹配names向量中的对应名称?

解决方法

我们可以通过创建肽段组标识,再将其与names向量匹配的方式,快速为数据框添加Name列。

步骤说明

  1. 按MHC分组,在每组内用Pos == "1"的位置标记新肽段组的起始,生成分组ID;
  2. 利用分组ID作为索引,直接从names向量中提取对应名称,赋值给新的Name列。

代码实现

方法一:Base R 实现

# 为每个MHC组内的肽段生成分组ID
df$pep_group <- with(df, ave(Pos, MHC, FUN = function(x) cumsum(x == "1")))

# 根据分组ID匹配对应的肽段名称
df$Name <- names[as.integer(df$pep_group)]

# 可选:删除临时的pep_group列
df <- df[, !names(df) %in% "pep_group"]

方法二:dplyr 实现(管道式操作更直观)

library(dplyr)

df_with_name <- df %>%
  # 按MHC分组处理
  group_by(MHC) %>%
  # 生成每个MHC内的肽段组ID
  mutate(pep_group = cumsum(Pos == "1")) %>%
  # 取消分组
  ungroup() %>%
  # 匹配对应的肽段名称
  mutate(Name = names[pep_group]) %>%
  # 可选:移除临时分组列
  select(-pep_group)

结果说明

处理后的数据框会新增Name列,每个肽段组(即Pos从1开始的连续行)会对应names向量中的一个名称:

  • 所有Pos起始为1的肽段组(如HLA-A02:01的第1-5行、HLA-B35:01的第19-23行)对应COL7A1_Pro268Ser;
  • 第二个肽段组对应COL7A1_Arg1120Lys;
  • 第三个肽段组对应CYP2D6_Val7Met。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:01:02