如何在R中合并两个列表

169

我有两个列表:

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)


10
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), list(6, 7))。在对list(2, 3)和list(2, 4)进行计算后,我想要得到list(2, 3, 4)。就是这样。 - Rohit Singh
1
@Vincent 先到了这里。这是他的答案。 - Rich Scriven
2
从您的编辑:如果您有list(2, 3)list(2, 4),并且想要list(2, 3, 4),您可能还想要unique(c(l1, l2)) - user20650
感谢 @Vincent Bonhomme。我看到你已经给了我答案,但我以为你想要澄清。是的,Vincent,请把它作为回答。 - Rohit Singh
显示剩余5条评论
3个回答

216

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

这段代码如何应用于n个列表?假设我有100个列表,想要使用c()函数将它们组合起来,我能否不写c(l1, l2, l3, l4...l100而实现这一操作? - NorthLattitude
@NorthLattitude 在创建列表时,必须有一种方法将所有列表放在一个列表中;-)。否则,可以使用parse/eval实现,即:l1 <- "a"; l2 <- "b" ; l3 <- "c"; eval(parse(text=paste0("list(", paste0("l", 1:3, collapse = ", "), ")"))) - Vincent Bonhomme

76
我们可以使用append
append(l1, l2)

它还有参数可以将元素插入到特定位置。


@Zach pastepaste0用于将字符串连接成一个更大的字符串。您能否更详细地描述一下问题,因为我没有完全理解它? - akrun
3
多于两个列表的语法是怎样的? - Frosi
8
@Frosi 你可以使用c(l1, l2, l3)append()仅是c()方法的包装器,但只接受两个参数。 - s_baldur

-2

我也想做同样的事情,但是为了将列表保留为字符串数组,所以我编写了新代码。根据我所阅读的内容,这可能不是最有效的方法,但对于我需要做的事情来说是可行的:

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

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


版主,我认为这个可以被删除。谢谢。 - Ollie Perkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接