如何在R中合并两个列表


111

我有两个清单:

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)?如果您还有其他期望,能否请您详细介绍一下和/或分享您的列表和所需的输出?
Vincent Bonhomme

与我上面提供的格式相同。
罗希特·辛格

1
我有一个列表:list(list(2,3),list(2,4),list(3,5),list(3,7),list(5,6),list(5,7),列表(6,7))。在对list(2,3)和list(2,4)进行计算之后,我想要list(2,3,4)。而已。
罗希特·辛格

1
@Vincent首先来到这里。这是他的答案。
Rich Scriven

2
从您的编辑:如果您有list(2, 3)list(2, 4),想要list(2, 3, 4),您可能还想要unique(c(l1, l2))
user20650 '16

Answers:


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 pastepaste0将字符串连接到一个更大的字符串。由于我不清楚,您能否再描述一下该问题?
akrun

2
@akrun超过两个列表的语法如何?
弗罗西'17

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

它只是创建一个新列表,并从两个提供的列表中添加项目以创建一个。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.