【问题标题】:extracting string between characters in a dataframe in r在r中的数据框中提取字符之间的字符串
【发布时间】:2021-12-24 20:23:46
【问题描述】:

嘿,

我必须提取“|”之间的所有内容在数据框中。

我认为不需要可重现的数据,但这是数据框的第一行作为示例

Accession                      FASTA                                                                                                                                                                                               
  <chr>                          <chr>                                                                                                                                                                                               
1 tr|A0A1G4NSV4|A0A1G4NSV4_9FLOR MLNIRPDEISNIIRQQIEKYDQKVQVANVGTVLQVGDGIARVYGLDDVMAGELLEFEDKTIGVALNLESDNVGVVLMGNGRDILEGSSVRATGKIAQIPVGEKFLGRVVNPLAEPIDGKGEINTSDNRLIESSAPGIIGRQSVCEPLQTGITAIDSMIPIGRGQRELIIGDRQTGKTAVALDTIINQKGQDVICV~
2 tr|A0A1C9CHB7|A0A1C9CHB7_PALPL MGNTKVSRRFRAMSELVQDKNYNYTEAIELLRRSSSAKFVETAEAHIVLGLDPKYADQQLRSTVILPKGTGKLAKVAVITKGEKITEALSAGADLVGAEDVIEQILQGNIDFDKLIATPDIMPLIAKLGRVLGPRGLMPSPKAGTVTIDVGQAVQEFKLGKLEYRLDKTGIVHIPFGKVNFSKEDLAANLLAIKE~
3 tr|A0A1C9CHD7|A0A1C9CHD7_PALPL MPHFTLKVLWLENNIAIAIDQIVGKGTSPLTSYFFWPRNDAWEHLKSELESKPWILEIDRINLLNQATEVINYWQEEGKNNSITKAQLKFPDFLFSGSH                                                                                                 
4 tr|A0A6C0W2A1|A0A6C0W2A1_PALDE MALYNKKLSPIKKTEVLDYKDIDLLRKFITEQGKILPRRSTGLTSKQQKKLTKAIKQARILALLPFLNKD                                                                                                                              
5 tr|R7QB42|R7QB42_CHOCR         MAFISFPSTFIGTNVKAASFSRRSRSAVRTTPIASAVPRNANLKKLQAGYLFPEIGRRRRAYLEQNPGADIISLGVGDTTMPIPEHICSGLVGGASKLGTEEGYSGYGAEQGMGPLREKIAQVLYKGTVKSDEVFVSDGAKCDISRLQQVFGATATVAVQDPSYPVYVDTSVMMGQTGLYDESKGQFEGIQYMQC~
6 tr|A0A3G1I907|A0A3G1I907_9FLOR MIKKGDVVKITRKESYWYQENGTVIKVESEIKYPVLVRFEKEAYNGVNSNNFAEDEVVVLK                                                                                                                                       

我该怎么做?

【问题讨论】:

  • 总是需要提供可重现的数据。通常不会关闭的问题。
  • 使用dput() 可以使您的数据更具重现性。

标签: r regex


【解决方案1】:

假设每一行都有一个 |在里面

lapply(strsplit(df$Accession,"|"),"[[",2)

【讨论】:

    【解决方案2】:

    这也可能对您有所帮助。假设您知道如何在数据集上应用代码,我只使用了一个字符串:

    • (?&lt;=\\|) 正向后视意味着所需的字符串前面应该有一个文字 |
    • (?=\\|) 正向前瞻意味着所需的字符串后面应该跟一个 literl | 这两个字符都没有被捕获,然后:
    • [^|]* 除文字 | 之外的任何字符零次或多次。\
    vec <- c("tr|A0A1G4NSV4|A0A1G4NSV4_9FLOR")
    
    regmatches(vec, regexpr("(?<=\\|)[^|]*(?=\\|)", vec, perl = TRUE))
    [1] "A0A1G4NSV4"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-02
      • 2020-04-18
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多