【问题标题】:Split character vector by element in R?在R中按元素拆分字符向量?
【发布时间】:2019-09-10 23:37:36
【问题描述】:

给定一个向量:

c("kuku", "pupu", "lilu","","ff","rrrr", "", "rrr")

我怎样才能用""分割它?

要获得 3 个向量:

c("kuku", "pupu", "lilu")
c("ff","rrrr")
c("rrr")

【问题讨论】:

    标签: r string vector split


    【解决方案1】:

    我们可以得到逻辑向量的累积和来为split创建分组索引

    i1 <- v1 == ""
    i1
    #[1] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
    
    
    grp <- cumsum(i1)
    grp
    #[1] 0 0 0 1 1 1 2 2
    

    请注意,对于累积和,它会在每个 TRUE 值处加 1。然后,我们做一个向量子集不包括""。通过否定 (!) TRUE 成为 FALSE 和 FALSE -> TRUE。

    v1[!i1]
    #[1] "kuku" "pupu" "lilu" "ff"   "rrrr" "rrr" 
    

    同样,“grp”也被子集化,因为我们希望两个向量具有相同的长度并执行split

    split(v1[!i1], grp[!i1])
    #$`0`
    #[1] "kuku" "pupu" "lilu"
    
    #$`1`
    #[1] "ff"   "rrrr"
    
    #$`2`
    #[1] "rrr"
    

    【讨论】:

    • 亲爱的akrun,一如既往的出色回答。请客气一点,解释一下。
    • @SteveS 谢谢。我添加了一些解释。希望对你有帮助
    猜你喜欢
    • 2022-06-15
    • 2017-02-16
    • 2016-04-27
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多