Как разделить список векторов на подсписки, увеличив порядок. - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть список 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)

У меня похожий вопрос ( Как разбить список векторов на маленькие списки в порядке убывания в r ), но в порядке убывания.

Как я могу сгенерировать его для произвольного числа векторов. Например, как, если у меня есть 10 или 20 векторов?

Есть идеи, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Построение ответа Фарнси. Если вам нужен каждый список в отдельном индексированном списке в глобальной среде, вы можете сделать что-то вроде этого.

#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
}
0 голосов
/ 12 ноября 2018

Я бы сунул их все в список списков

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

Теперь MyLists[[1]] равно list1 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...