如何在R中组合两个列表
Posted
技术标签:
【中文标题】如何在R中组合两个列表【英文标题】:How to combine two lists in R 【发布时间】:2016-08-08 12:13:37 【问题描述】:我有两个列表:
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)
。
【问题讨论】:
c(l1, l2)
?如果您还有其他期望,能否请您详细说明一下和/或分享您的列表和所需的输出?
它的格式和我上面提供的一样。
我有一个列表:list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6),列表(5, 7),列表(6, 7))。在计算 list(2, 3) 和 list(2, 4) 之后,我想要 list(2, 3, 4)。就是这样。
@Vincent 先到了这里。这是他的答案。
来自您的编辑:如果您有 list(2, 3)
和 list(2, 4),
并且想要 list(2, 3, 4)
,您可能还想要 unique(c(l1, l2))
【参考方案1】:
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 创建列表时,必须有一种方法可以将所有列表放入列表中;-)。否则,parse/eval
仍然可行,即:l1 <- "a"; l2 <- "b" ; l3 <- "c"; eval(parse(text=paste0("list(", paste0("l", 1:3, collapse = ", "), ")")))
【参考方案2】:
我们可以使用append
append(l1, l2)
它还具有在特定位置插入元素的参数。
【讨论】:
@Zachpaste
和 paste0
将字符串连接到一个更大的字符串中。由于我没有理解清楚,您能否再描述一下这个问题?
@akrun 两个以上列表的语法如何?
@Frosi 你可以做c(l1, l2, l3)
,append()
只是c()
的包装,但只需要两个参数。【参考方案3】:
我想做同样的事情,但是为了将列表保留为一个字符串数组,所以我编写了一个新代码,从我一直在阅读的内容来看,它可能不是最有效的,但对我有用需要做的:
combineListsAsOne <-function(list1, list2)
n <- c()
for(x in list1)
n<-c(n, x)
for(y in list2)
n<-c(n, y)
return(n)
它只是创建一个新列表并从两个提供的列表中添加项目以创建一个。
【讨论】:
以上是关于如何在R中组合两个列表的主要内容,如果未能解决你的问题,请参考以下文章