我有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个向量,怎么办?
有什么想法吗?
答案 0 :(得分:3)
我会将它们全部粘贴在列表列表中
MyLists <- list()
i <- 1
for (inc in 1:3){
MyLists[[inc]] <- x[i:(i+inc-1)]
i <- i+inc
}
现在MyLists[[1]]
是list1
,等等。
答案 1 :(得分:1)
以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
}