Как объединить два списка в R

113

У меня есть два списка:

l1 = list(2, 3)
l2 = list(4)

Я хочу третий список:

list(2, 3, 4).

Как я могу сделать это простым способом. Хотя я могу сделать это в цикле for, но я ожидаю ответа в один лайнер или, возможно, встроенного метода.

Собственно, у меня есть список:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
после вычислений на list(2, 3)и list(2, 4), я хочу list(2, 3, 4).

Рохит Сингх
источник
7
c(l1, l2)? если вы ожидаете чего-то еще, не могли бы вы немного подробно рассказать и / или поделиться своими списками и желаемым результатом?
Винсент Бономм
Это тот же формат, что я указал выше.
Рохит Сингх
1
У меня есть список: список (список (2, 3), список (2, 4), список (3, 5), список (3, 7), список (5, 6), список (5, 7), список (6, 7)). После вычисления списка (2, 3) и списка (2, 4) мне нужен список (2, 3, 4). Вот и все.
Рохит Сингх
1
@ Винсент пришел первым. Это его ответ.
Rich Scriven
2
С вашего редактирования: если у вас есть list(2, 3)и list(2, 4),и хотите list(2, 3, 4), вы можете такжеunique(c(l1, l2))
user20650

Ответы:

145

c можно использовать в списках (и не только в векторах):

# you have
l1 = list(2, 3)
l2 = list(4)

# you want
list(2, 3, 4)
[[1]]
[1] 2

[[2]]
[1] 3

[[3]]
[1] 4

# you can do
c(l1, l2)
[[1]]
[1] 2

[[2]]
[1] 3

[[3]]
[1] 4

Если у вас есть список списков, вы можете сделать это (возможно) более комфортно do.call, например:

do.call(c, list(l1, l2))
Винсент Бономм
источник
54

Мы можем использовать append

append(l1, l2)

У него также есть аргументы для вставки элемента в определенное место.

Акрун
источник
@Zach pasteи paste0должны соединять строки в большую строку. Не могли бы вы подробнее описать проблему, я не совсем понял ее?
Акрун
2
@akrun Как синтаксис для более чем двух списков?
Фроси
4
@Frosi вы можете сделать c(l1, l2, l3), append()это просто оболочка, c()но принимает только два аргумента.
sindri_baldur
0

Я хотел сделать то же самое, но чтобы сохранить список как простой массив строк, поэтому я написал новый код, который из того, что я читал, может быть не самым эффективным, но работал для того, что мне нужно было сделать. :

combineListsAsOne <-function(list1, list2){
  n <- c()
  for(x in list1){
    n<-c(n, x)
  }
  for(y in list2){
    n<-c(n, y)
  }
  return(n)
}

Он просто создает новый список и добавляет элементы из двух предоставленных списков для создания одного.

Джон Проестакс
источник