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

如何基于File_pdb列后缀重排R语言data.table的链相关字段

data.table链信息定向交换方案

需要根据File_pdb列末尾的两个字符(如6wps_AH中的AH),将对应第一个字符(A)的链数据(Res2/Pos2/Chain2)移到Res1/Pos1/Chain1列,原Res1/Pos1/Chain1的数据移到Res2/Pos2/Chain2列。要求方法通用,能自动识别并处理已符合要求和未符合要求的行。

原始数据

library(data.table)
dt <- data.table::as.data.table(structure(list(File_pdb = c("6wps_AH", "6wps_AH", "6wps_AH", 
"6wps_AH", "6wps_AH", "6wps_AH", "6wps_AH", "6wps_AH", "6wps_AH", 
"6wps_AH", "6wps_AH", "6wps_AH", "6wps_AH", "6wps_AH", "6wps_AH", 
"6wps_AH"), Res1 = c("TRP", "GLU", "PHE", "SER", "ILE", "TYR", 
"GLY", "PHE", "LEU", "TRP", "PHE", "PRO", "ILE", "TRP", "ALA", 
"THR"), Pos1 = c("105", "108", "106", "109", "111", "100", "103", 
"106", "110", "105", "106", "28", "111", "105", "104", "30"), 
    Chain1 = c("H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
    "H", "H", "H", "H", "H", "H"), Res2 = c("CYS", "LYS", "LYS", 
    "THR", "THR", "ASN", "GLU", "GLU", "GLU", "PRO", "PRO", "LEU", 
    "ASN", "GLU", "GLU", "ASN"), Pos2 = c("361", "356", "356", 
    "345", "345", "343", "340", "340", "340", "337", "337", "335", 
    "343", "340", "340", "334"), Chain2 = c("A", "A", "A", "A", 
    "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"
    )), row.names = c(NA, -16L), class = c("data.table", "data.frame"
)))

解决方案代码

# 提取目标链:从File_pdb中截取末尾两个字符的第一个
dt[, target_chain := substr(File_pdb, nchar(File_pdb)-1, nchar(File_pdb)-1)]

# 仅对Chain1不等于目标链的行执行列交换
dt[Chain1 != target_chain, `:=`(
  # 临时存储原Res1/Pos1/Chain1的值,防止覆盖丢失
  temp_Res = Res1, temp_Pos = Pos1, temp_Chain = Chain1,
  # 将目标链数据移到Res1组列
  Res1 = Res2, Pos1 = Pos2, Chain1 = Chain2,
  # 将原Res1组数据移到Res2组列
  Res2 = temp_Res, Pos2 = temp_Pos, Chain2 = temp_Chain
)][, c("temp_Res", "temp_Pos", "temp_Chain") := NULL] # 清理临时列

# 可选:删除目标链标记列
dt[, target_chain := NULL]

代码说明

  1. 提取目标链:通过substr精准截取File_pdb的倒数第二个字符,得到需要前置的链标识。
  2. 条件交换:只对不符合要求的行(Chain1不等于目标链)执行交换,已经符合要求的行保持不变。
  3. 临时变量过渡:用临时列存储原始数据,避免直接赋值时数据覆盖丢失。
  4. 清理冗余列:交换完成后删除临时列和目标链标记列,保持数据整洁。

处理后第一行的结果示例:

File_pdb Res1 Pos1 Chain1 Res2 Pos2 Chain2
6wps_AH  CYS  361      A  TRP  105      H

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:25:36