【问题标题】:Change variable values with different iterations使用不同的迭代更改变量值
【发布时间】:2023-02-15 22:48:42
【问题描述】:

考虑到我有 2 个不同的对象。第一个是数据框 (df),它看起来像这样:

>df
Pos         MHC    Peptide
  1 HLA-A*02:01 VTGYKVQYTS
  2 HLA-A*02:01 TGYKVQYTSL
  3 HLA-A*02:01 GYKVQYTSLT
  4 HLA-A*02:01 YKVQYTSLTG
  5 HLA-A*02:01 KVQYTSLTGL
  1 HLA-A*02:01 SHDLGIILQK
  2 HLA-A*02:01 HDLGIILQKI
  3 HLA-A*02:01 DLGIILQKIR
  4 HLA-A*02:01 LGIILQKIRD
  5 HLA-A*02:01 GIILQKIRDM
  6 HLA-A*02:01 IILQKIRDMP
  7 HLA-A*02:01 ILQKIRDMPY
  8 HLA-A*02:01 LQKIRDMPYM
  1 HLA-A*02:01 MGLEALMPLA
  2 HLA-A*02:01 GLEALMPLAV
  3 HLA-A*02:01 LEALMPLAVI
  4 HLA-A*02:01 EALMPLAVIV
  5 HLA-A*02:01 ALMPLAVIVA
  1 HLA-B*35:01 VTGYKVQYTS
  2 HLA-B*35:01 TGYKVQYTSL
  3 HLA-B*35:01 GYKVQYTSLT
  4 HLA-B*35:01 YKVQYTSLTG
  5 HLA-B*35:01 KVQYTSLTGL
  1 HLA-B*35:01 SHDLGIILQK
  2 HLA-B*35:01 HDLGIILQKI
  3 HLA-B*35:01 DLGIILQKIR
  4 HLA-B*35:01 LGIILQKIRD
  5 HLA-B*35:01 GIILQKIRDM
  6 HLA-B*35:01 IILQKIRDMP
  7 HLA-B*35:01 ILQKIRDMPY
  8 HLA-B*35:01 LQKIRDMPYM
  1 HLA-B*35:01 MGLEALMPLA
  2 HLA-B*35:01 GLEALMPLAV
  3 HLA-B*35:01 LEALMPLAVI
  4 HLA-B*35:01 EALMPLAVIV
  5 HLA-B*35:01 ALMPLAVIVA

现在,可以注意到:

  1. 对于 df$Pos 列的每次迭代,df$Peptide 本质上是相同的(它只有一个 aa 不同,因为阅读框架是向前的)。和每次 df$Pos 重新启动,它表示一个新的肽.
  2. 另外,请注意数据框的一半由HLA-A*02:01df$MHC专栏,另一半由HLA-B*35:01.除此之外,每个组的肽完全相同,因此它们的名称也应该相同.

    也就是说,第二个对象 names 包含每个肽段的定义名称,如下所示:

    >names
    "COL7A1_Pro268Ser"  "COL7A1_Arg1120Lys" "CYP2D6_Val7Met"
    

    我的问题是:

    我怎样才能组合这两个对象,所以最终的数据框看起来像这样:

    >df
    Pos         MHC    Peptide              Name
      1 HLA-A*02:01 VTGYKVQYTS  COL7A1_Pro268Ser
      2 HLA-A*02:01 TGYKVQYTSL  COL7A1_Pro268Ser
      3 HLA-A*02:01 GYKVQYTSLT  COL7A1_Pro268Ser
      4 HLA-A*02:01 YKVQYTSLTG  COL7A1_Pro268Ser
      5 HLA-A*02:01 KVQYTSLTGL  COL7A1_Pro268Ser
      1 HLA-A*02:01 SHDLGIILQK COL7A1_Arg1120Lys
      2 HLA-A*02:01 HDLGIILQKI COL7A1_Arg1120Lys
      3 HLA-A*02:01 DLGIILQKIR COL7A1_Arg1120Lys
      4 HLA-A*02:01 LGIILQKIRD COL7A1_Arg1120Lys
      5 HLA-A*02:01 GIILQKIRDM COL7A1_Arg1120Lys
      6 HLA-A*02:01 IILQKIRDMP COL7A1_Arg1120Lys
      7 HLA-A*02:01 ILQKIRDMPY COL7A1_Arg1120Lys
      8 HLA-A*02:01 LQKIRDMPYM COL7A1_Arg1120Lys
      1 HLA-A*02:01 MGLEALMPLA    CYP2D6_Val7Met
      2 HLA-A*02:01 GLEALMPLAV    CYP2D6_Val7Met
      3 HLA-A*02:01 LEALMPLAVI    CYP2D6_Val7Met
      4 HLA-A*02:01 EALMPLAVIV    CYP2D6_Val7Met
      5 HLA-A*02:01 ALMPLAVIVA    CYP2D6_Val7Met
      1 HLA-B*35:01 VTGYKVQYTS  COL7A1_Pro268Ser
      2 HLA-B*35:01 TGYKVQYTSL  COL7A1_Pro268Ser
      3 HLA-B*35:01 GYKVQYTSLT  COL7A1_Pro268Ser
      4 HLA-B*35:01 YKVQYTSLTG  COL7A1_Pro268Ser
      5 HLA-B*35:01 KVQYTSLTGL  COL7A1_Pro268Ser
      1 HLA-B*35:01 SHDLGIILQK COL7A1_Arg1120Lys
      2 HLA-B*35:01 HDLGIILQKI COL7A1_Arg1120Lys
      3 HLA-B*35:01 DLGIILQKIR COL7A1_Arg1120Lys
      4 HLA-B*35:01 LGIILQKIRD COL7A1_Arg1120Lys
      5 HLA-B*35:01 GIILQKIRDM COL7A1_Arg1120Lys
      6 HLA-B*35:01 IILQKIRDMP COL7A1_Arg1120Lys
      7 HLA-B*35:01 ILQKIRDMPY COL7A1_Arg1120Lys
      8 HLA-B*35:01 LQKIRDMPYM COL7A1_Arg1120Lys
      1 HLA-B*35:01 MGLEALMPLA    CYP2D6_Val7Met
      2 HLA-B*35:01 GLEALMPLAV    CYP2D6_Val7Met
      3 HLA-B*35:01 LEALMPLAVI    CYP2D6_Val7Met
      4 HLA-B*35:01 EALMPLAVIV    CYP2D6_Val7Met
      5 HLA-B*35:01 ALMPLAVIVA    CYP2D6_Val7Met
    

    请注意,我已经在不同的来源中进行了搜索,包括此处。因此,我发布这个问题是因为我在其他地方找不到类似的东西。任何帮助是极大的赞赏。

    示例数据:

    df <- structure(list(Pos = c("1","2","3","4","5","1","2","3","4","5","6","7","8","1","2","3","4","5","1","2","3","4","5","1","2","3","4","5","6","7","8","1","2","3","4","5"), MHC = c("HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-A*02:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01","HLA-B*35:01"), Peptide = c("VTGYKVQYTS","TGYKVQYTSL","GYKVQYTSLT","YKVQYTSLTG","KVQYTSLTGL","SHDLGIILQK",
    "HDLGIILQKI","DLGIILQKIR","LGIILQKIRD","GIILQKIRDM","IILQKIRDMP","ILQKIRDMPY","LQKIRDMPYM","MGLEALMPLA","GLEALMPLAV","LEALMPLAVI","EALMPLAVIV","ALMPLAVIVA","VTGYKVQYTS","TGYKVQYTSL","GYKVQYTSLT","YKVQYTSLTG","KVQYTSLTGL","SHDLGIILQK","HDLGIILQKI","DLGIILQKIR","LGIILQKIRD","GIILQKIRDM","IILQKIRDMP","ILQKIRDMPY","LQKIRDMPYM","MGLEALMPLA","GLEALMPLAV","LEALMPLAVI","EALMPLAVIV","ALMPLAVIVA")), class = "data.frame", row.names = c(1L,2L,3L,4L,5L,6L,
    7L,8L,9L,10L,11L,12L,13L,14L,15L,16L,17L,18L,19L,20L,21L,22L,23L,24L,25L,26L,27L,28L,
    29L,30L,31L,32L,33L,34L,35L,36L))
    
    names <- c("COL7A1_Pro268Ser", "COL7A1_Arg1120Lys", "CYP2D6_Val7Met")
    

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    这有效:

    # compute the lengths of individual peptides
    peptide.len <- diff(c(which(df$Pos == 1), nrow(df)+1))
    # repeat the names over the number of peptides
    names.rep <- rep(names, length.out=length(peptide.len))
    # repeat each name according to peptide lengths
    df$Name <- rep(names.rep, peptide.len)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 2019-12-13
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      相关资源
      最近更新 更多