【问题标题】:How to split a list of vectors to sub-lists by increasing order.如何通过增加顺序将向量列表拆分为子列表。
【发布时间】:2018-11-12 06:00:10
【问题描述】:

我有一个n 向量列表。我想将其拆分为子列表,其中每个列表中的向量数量不同。向量的数量从一个列表到另一个列表顺序增加。例如, 如果我有一个带有6 向量的列表。然后,我想将其拆分为几个列表,如下所示:

第一个列表包含一个向量。然后,第二个列表包含 2 个向量,依此类推。例如,

假设我有如下列表x

x <- list(x1=c(1,2,3), x2=c(1,4,3), x3=c(3,4,6), x4=c(4,8,4), x5=c(4,33,4), x6=c(9,6,7))

然后,我想把它分成3个列表,

list1 = x1
list2 = list(x2, x3)
list3 = list(x4,x5, x6)

我有类似的问题 (How to splitting a list of vectors to small lists in decreasing order in r),但按降序排列。

如何将它生成为任意数量的向量。例如,如果我有 10 个或 20 个向量怎么办?

有什么想法吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    我会把它们都放在一个列表列表中

    MyLists <- list()
    i <- 1
    for (inc in 1:3){
      MyLists[[inc]] <- x[i:(i+inc-1)]
      i <- i+inc
    }
    

    现在MyLists[[1]]list1,等等

    【讨论】:

      【解决方案2】:

      根据 farnsy 的回答,如果您需要在全局环境中将每个列表放在单独的索引列表中,您可以执行以下操作。

      #your Stater list
      x <- list(x1=c(1,2,3), x2=c(1,4,3), x3=c(3,4,6), 
                x4=c(4,8,4), x5=c(4,33,4), x6=c(9,6,7))
      
      
      #using a paste parse eval approach to evaluate a string
      i<-1
      for(inc in 1:3){
        eval(parse(text =
            paste0("list", inc, "<-list(",
               paste0("x$",names(x)[i:(i+inc-1)],collapse = ","),
               ")")
        ))
      
        i <- i+inc
      }
      

      【讨论】:

        猜你喜欢
        • 2016-09-01
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多