代码之家  ›  专栏  ›  技术社区  ›  compbiostats

使用R::split()根据名称将数据分隔为INTO组

  •  0
  • compbiostats  · 技术社区  · 3 年前

    考虑以下名为 x 其输出是R:

    > x
        A
        A
        A
        B
        B
        C
    

    我想用 split 拆分 x 分成3组A、B和C,其中A有3个元素,B有2个,C有1个。

    分组因素论点应该是什么, f ,在 split() ?

    上面是一个微不足道的例子。我的结构要大得多。

    我的真实例子包括FASTA标题,其中多个DNA序列对应于同一物种,我需要根据物种进行拆分。但是,物种名称出现在标题中,如下所示:

    ">COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P"   
    

    物种在这里 阿甘

    由于我不确定现阶段最合适的输出,它可能看起来像

    $`Agabus adpressus`
    Seq1
    Seq2
    Seq3
    
    1 回复  |  直到 3 年前
        1
  •  2
  •   Onyambu    3 年前
    read.table(text = vals, sep='|')|>
       split(~paste(V3,V4))|>
       map(~invoke(str_c, .x, sep='|'))
    
    $`Agabus adpressus`
    [1] ">COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P"
    [2] ">CZLFG631-11|MZ730009|Agabus|adpressus|BSF8945|AOL-5N"
    [3] ">XOLGG558-12|MK630011|Agabus|adpressus|JLD6018|CVI-1P"
    
    $`Agabus ajax`
    [1] ">YPLFG578-81|JF830122|Agabus|ajax|XCV0091|CMM-1N"
    [2] ">CLVFG679-13|KA301202|Agabus|ajax|FFP1111|AND-5Z"
    

    虽然您可以拆分,但我建议使用 group_by 其工作原理相似且更易于使用

        2
  •  1
  •   AndS.    3 年前

    我想你的真实数据是不一致的,因为同一物种的每个字符串都是完全相同的。在这种情况下,您需要将物种从字符串中拉出以进行拆分:

    vals <- c(">COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P",
                     ">CZLFG631-11|MZ730009|Agabus|adpressus|BSF8945|AOL-5N",
                     ">XOLGG558-12|MK630011|Agabus|adpressus|JLD6018|CVI-1P",
                     ">YPLFG578-81|JF830122|Agabus|ajax|XCV0091|CMM-1N",
                     ">CLVFG679-13|KA301202|Agabus|ajax|FFP1111|AND-5Z")
    
    
    split(vals, sub("(?:(.*)\\|){2}(\\w+)\\|(\\w+)\\|.*?$", "\\1-\\2", vals))
    #> $`Agabus-adpressus`
    #> [1] ">COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P"
    #> [2] ">CZLFG631-11|MZ730009|Agabus|adpressus|BSF8945|AOL-5N"
    #> [3] ">XOLGG558-12|MK630011|Agabus|adpressus|JLD6018|CVI-1P"
    #> 
    #> $`Agabus-ajax`
    #> [1] ">YPLFG578-81|JF830122|Agabus|ajax|XCV0091|CMM-1N"
    #> [2] ">CLVFG679-13|KA301202|Agabus|ajax|FFP1111|AND-5Z"
    
    推荐文章