【问题标题】:Split elements at a value delimiter in vector R [duplicate]在向量 R 中的值分隔符处拆分元素 [重复]
【发布时间】:2017-02-16 08:27:52
【问题描述】:

我正在尝试在某个值分隔符处拆分向量。 我有以下向量:v <- c("A", "B", "C","-" ,"D", "E", "F") 假设对于这个例子,值分隔符是:'-'。

我想要的是获得与这个向量一样多的几个向量包含这个分隔符,因为我不知道其中有多少。在这个例子中,我想要的结果应该是两个向量 v1v2,输出如下:

> v1
[1] "A" "B" "C"

> v2
[1] "D" "E" "F"

有没有这样的方法或包?

【问题讨论】:

    标签: r vector split


    【解决方案1】:

    我们可以在逻辑向量上使用cumsum,然后在vectors的list中执行split

    lst <- split(v[v!='-'], cumsum(v=="-")[v!='-'])
    names(lst) <- paste0("v", seq_along(lst))
    

    如果我们需要它作为vector 对象,请使用list2env(虽然不推荐)

    list2env(lst, envir = .GlobalEnv)
    

    否则,我们可以直接在全局环境中创建vector对象

    i1 <- v=="-"
    i2 <- v!= "-"
    grp <- cumsum(i1)
    v1 <- v[i2 & grp==0]  
    v2 <- v[i2 & grp == 1]
    

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 2019-09-10
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多