说我想创建一个包含四个列表的列表。前两个是手动定义的,后两个是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) })
)
)
但所有这些列表的业务列表似乎有点冗长!我知道我当然可以写一个函数来做这个,但我想知道是否有一个更清洁的一个班轮?
答案 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"