【问题标题】:How to split a vector by delimiter?如何通过分隔符分割向量?
【发布时间】:2012-12-01 05:59:04
【问题描述】:

我有一个整数向量,例如c(1,2,0,3,4) 我希望 0 成为分隔符并获得 list(c(1,2), c(3,4))。有没有我可以使用的库函数?

【问题讨论】:

    标签: r


    【解决方案1】:

    我不知道任何库函数,但你可以自己编写:

    split.vec <- function(vec, sep = 0) {
        is.sep <- vec == sep
        split(vec[!is.sep], cumsum(is.sep)[!is.sep])
    }
    
    split.vec(c(1,2,0,3,4), 0)
    # $`0`
    # [1] 1 2
    # 
    # $`1`
    # [1] 3 4
    

    【讨论】:

    • 不错。我也在用cumsum 测试一些东西。
    • 我认为您可以遵循相同的方法并使用 rle(is.sep!=0) 作为 split 中的因素。今天上午还没有咖啡,所以我还没有弄清楚细节:-(
    猜你喜欢
    • 2016-03-21
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多