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

R语言处理蛋白质修饰序列 按修饰数重复行拆分单个修饰到每行

R实现蛋白质修饰序列拆分方案

实现思路

  • 先用separate_rows按逗号拆分多修饰列,将一行多修饰自动扩展为N行(N为该行修饰数量)
  • 逐行匹配修饰序列中的括号标注,仅保留当前行对应修饰的标记,删除其余修饰标注

完整代码

# 加载依赖包
library(tidyverse)

# 修正示例输入数据的笔误(原第二行Modified.Sequence标注错误)
df = data.frame(
        Sequence = c('ABCDEF','ABCDEFGH','DEFGH'),
        Modification = c('Acetyl (Protein N-term),Oxidation (M),Methyl (KR)','Oxidation (M)','Acetyl (Protein N-term), Methyl (KR)'),
        Modified.Sequence = c('AB(Acetyl (Protein N-term))CD(Oxidation (M))EF(Methyl (KR))','ABCDEF(Oxidation (M))GH',
        'ABC(Acetyl (Protein N-term))DEF(Methyl (KR))GH')
)

# 拆分处理
df_result <- df %>%
  # 按逗号拆分修饰列,自动忽略逗号前后的空格
  separate_rows(Modification, sep = ",\\s*") %>%
  rowwise() %>%
  mutate(
    Modified.Sequence = str_replace_all(Modified.Sequence, "\\([^()]+\\)", function(match_val) {
      # 提取括号内的修饰内容对比
      inner_mod <- str_sub(match_val, 2, -2)
      return(ifelse(inner_mod == Modification, match_val, ""))
    })
  ) %>%
  ungroup()

# 查看结果
print(df_result)

适配说明

代码不需要提前枚举修饰类型,可自动适配任意数量、任意名称的修饰拆分需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:48:04