Як поєднати два списки в R


111

У мене є два списки:

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

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

list(2, 3, 4).

Як я можу це зробити простим способом. Хоча я можу це зробити для циклу, але я очікую відповіді на один вкладиш, або, можливо, вбудований метод.

Власне, у мене є список:
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
@Vincent першим сюди потрапив Це його відповідь.
Багатий скрип

2
Зі своєї list(2, 3)list(2, 4),list(2, 3, 4)unique(c(l1, l2))
редакції

Відповіді:


143

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повинні з'єднати рядки разом у більшу струну. Чи можете ви описати проблему трохи більше, оскільки я не зрозумів її чітко?
akrun

2
@akrun Як синтаксис складається з більш ніж двох списків?
Фрозі

3
@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)
}

Він просто створює новий список і додає елементи з двох поданих списків, щоб створити його.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.