Объедините серию списков с увеличивающимися числовыми суффиксами в R

#r #list #concatenation

Вопрос:

В R у меня есть ряд списков с увеличивающимися числовыми суффиксами , например mylist1 , mylist2, mylist3. Я хочу объединить их , например, c(mylist1, mylist2, mylist3).

Есть ли сокращенный способ справиться с этим?

Комментарии:

1. Пожалуйста, объясните, что вы подразумеваете под «объединением»

2. Или вы хотите создать один список, объединив списки?

3. Я не хочу сливаться. Добавление может быть лучшим термином, чем объединение

Ответ №1:

Я думаю, что вы пытаетесь создать список списков. Вы можете сделать это, просто позвонив:

 list(list1, list2, list3)
 

Если у вас много списков с похожим шаблоном имен, вы можете выбрать использовать mget , чтобы ПОЛУЧИТЬ все объекты, имена которых имеют определенный шаблон, ( ls(pattern=x) ).

данные

 list8<-list(1,2)
list9<-list(3,4)
list10<-list(5,6)
#Included the lists with indexes 8:10 so that the importance of ordering by `parse_number(ls)` is highlighted. Without the `parse_number` step, the list would be sorted by names, with a different order 

 

Ответ

 list_of_lists<-mget(ls(pattern = 'list\d ')[order(parse_number(ls(pattern = 'list\d ')))])

> str(list_of_lists)
List of 3
 $ mylist8:List of 2
  ..$ : num 1
  ..$ : num 2
 $ mylist9:List of 2
  ..$ : num 3
  ..$ : num 4
 $ mylist10:List of 2
  ..$ : num 5
  ..$ : num 6
 

Комментарии:

1. Спасибо. mget выполняет работу по составлению списка списков, но я хотел объединить их, добавив вместе. Итак, используя ваш пример, я хотел c(список 8 , список 9, список 10), создав список из 6 объектов. Я мог бы сделать второй шаг unlist (list_of_lists, recursive = F) , чтобы получить то, что мне нужно, но все же интересно посмотреть, есть ли одноэтапный процесс

2. Другим базовым вариантом , который все еще использует промежуточный этап создания списка списков, было бы использование Reduce (append, mget(paste0("list", c(8:10)))) , но мне все еще интересно узнать, есть ли способ без создания промежуточного списка списков

3. Способы, которые вы описываете, кажутся достаточно простыми, что еще вы могли там найти?