【问题标题】:How to get intervals as a list of vectors?如何获取间隔作为向量列表?
【发布时间】:2023-04-02 08:40:01
【问题描述】:

我有一个数字向量,我需要将区间作为向量列表。

我认为这很容易,但我真的很难找到一个好的、简单的方法。

一种糟糕而复杂的方法是粘贴向量及其滞后,然后拆分结果。

这是有效但丑陋的代表:

library(tidyverse)
xx = c(1, 5, 10 ,15 ,20)
paste0(lag(xx), "-", xx-1) %>% str_split("-") #nevermind the first one, it cannot really make sense anyway
#> [[1]]
#> [1] "NA" "0" 
#> 
#> [[2]]
#> [1] "1" "4"
#> 
#> [[3]]
#> [1] "5" "9"
#> 
#> [[4]]
#> [1] "10" "14"
#> 
#> [[5]]
#> [1] "15" "19"

reprex package (v0.3.0) 于 2020-09-06 创建

有没有更简洁的方法来做同样的事情?

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用Map

    Map(c, xx[-length(xx)], xx[-1] - 1)
    
    #[[1]]
    #[1] 1 4
    
    #[[2]]
    #[1] 5 9
    
    #[[3]]
    #[1] 10 14
    
    #[[4]]
    #[1] 15 19
    

    我们还可以使用lapply 迭代变量的长度。

    lapply(seq_along(xx[-1]), function(i) c(xx[i], xx[i+1] - 1))
    

    【讨论】:

      【解决方案2】:

      我们可以从purrr使用map2

      library(purrr)
      map2(xx[-length(xx)], xx[-1] -1, c)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-24
        • 2012-05-06
        相关资源
        最近更新 更多