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

如何将r中的两个列表合并为一个区域列表?

  •  1
  • Caterina  · 技术社区  · 2 年前

    我在R中列出了以下列表:

    start <- c(1, 5, 11)
    end <- c(2, 9, 13)
    

    如何以这种方式将它们连接起来以形成非连续范围的列表:

    c(1:2, 5:9, 11:13)

    2 回复  |  直到 2 年前
        1
  •  3
  •   ThomasIsCoding    2 年前

    尝试 Map

    > Map(`:`, start, end)
    [[1]]
    [1] 1 2
    
    [[2]]
    [1] 5 6 7 8 9
    
    [[3]]
    [1] 11 12 13
    

    或与 unlist 此外

    > unlist(Map(`:`, start, end))
     [1]  1  2  5  6  7  8  9 11 12 13
    

    更有效的方法可能是使用 sequence

    > sequence(end - start + 1, start)
     [1]  1  2  5  6  7  8  9 11 12 13
    
        2
  •  1
  •   xfactorz    2 年前

    要将R中的起始列表和结束列表中的范围连接起来,以创建如图所示的非连续范围列表,可以使用循环或lapply函数。以下是如何使用lapply功能实现这一点: 启动<-c(1,5,11) 结束<-c(2,9,13)

    结果<-unlist(lapply(seq_along(start),function(i)start[i]:end[i])

    打印(结果)

    推荐文章