将一些列表与Lappy在R中返回的一些列表连接起来的更可读的方法

将一些列表与Lappy在R中返回的一些列表连接起来的更可读的方法,r,lapply,R,Lapply,假设我想创建一个包含四个列表的列表。前两个是手动定义的,后两个是lappy的结果。具体来说,我有以下三项: > list("a" = 1) > list("b" = 1) > lapply(1:2,FUN=function(i) { list("c"=i) } 我想把它们结合起来,这样输出列表是: [[1]] [[1]]$a [1] 1 [[2]] [[2]]$b [1] 1 [[3]] [[3]]$c [1] 1 [[4]] [[4]]$c [1] 2 我可以

假设我想创建一个包含四个列表的列表。前两个是手动定义的,后两个是lappy的结果。具体来说,我有以下三项:

> list("a" = 1)
> list("b" = 1)
> lapply(1:2,FUN=function(i) { list("c"=i) }
我想把它们结合起来,这样输出列表是:

[[1]]
[[1]]$a
[1] 1


[[2]]
[[2]]$b
[1] 1


[[3]]
[[3]]$c
[1] 1


[[4]]
[[4]]$c
[1] 2
我可以通过以下方法实现:

> unlist(recursive=FALSE,
         list(
              list(list("a"=1),list("b"=1)),
              lapply(1:2,FUN = function(i) { list("c"=i) })
              )
         )

但是所有这些商业清单似乎有点冗长!我知道我当然可以编写一个函数来实现这一点,但我想知道是否有更干净的一行程序?

当您反对“列表列表业务似乎有点冗长”时,您是否不满意列表的输出冗长,或者列表的代码冗长

c(list(list("a" = 1),list("b" = 1)),lapply(1:2,FUN=function(i) { list("c"=i) }))
哪些部分可以是原子列表,哪些部分需要保留为列表?这两个问题中有一个解决了你的问题吗

c(
  rep("a", 1),
  rep("b", 1),
  rep("c", 2)
)

rep(
  c("a", "b", "c"), 
  c( 1 ,  1 ,  2 )
)
两者都产生原子字符向量:

[1] "a" "b" "c" "c"

谢谢,但不幸的是,我需要输出与问题中指定的精确数据结构相匹配(由于目前我无法控制的原因)。我对冗长业务的评论是关于我自己的解决方案,其中我以非递归方式未列出列表列表