将一些列表与Lappy在R中返回的一些列表连接起来的更可读的方法
假设我想创建一个包含四个列表的列表。前两个是手动定义的,后两个是lappy的结果。具体来说,我有以下三项:将一些列表与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 我可以
> 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"
谢谢,但不幸的是,我需要输出与问题中指定的精确数据结构相匹配(由于目前我无法控制的原因)。我对冗长业务的评论是关于我自己的解决方案,其中我以非递归方式未列出列表列表