一种更易读的方法,可以将一些列表与R中的lapply返回的一些列表连接起来

时间:2017-07-04 15:01:16

标签: r lapply

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

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

但所有这些列表的业务列表似乎有点冗长!我知道我当然可以写一个函数来做这个,但我想知道是否有一个更清洁的一个班轮?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

当你反对那个"列表列表列表业务似乎有点冗长",您是否不满意列表的输出是详细的,或者列表的代码是冗长的?

哪些部分可以是原子列表,哪些部分需要保留列表?这些都可以解决您的问题吗?

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

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

两者都产生原子特征向量:

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