【发布时间】:2019-07-17 08:44:50
【问题描述】:
我想取消列出一个嵌套列表,其中包含一些项目作为向量。问题是 unlist 也会拆分这些向量。我怎样才能将它们保留为单个项目?
a) 上一级(unlist 参数:recursive = F)
b) 所有级别(未列出参数:recursive = T)
示例如下:
list0 <- list(c(1,2),
list(3,
c(4,5)
)
)
> list0
[[1]]
[1] 1 2
[[2]]
[[2]][[1]]
[1] 3
[[2]][[2]]
[1] 4 5
如果我们取消列出一个级别:
list1 <- unlist(list0, recursive = F)
我们得到:
> list1
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4 5
但是,由于我想保持向量不变,我想得到:
[[1]]
[1] 1 2
[[2]]
[1] 3
[[3]]
[1] 4 5
也许一种方法是使用 for 循环,但我想如果列表数量很多,那会很慢。
谁能给我一些提示,好吗?
提前致谢
【问题讨论】:
-
这是一个选项
renquote <- function(l) if (is.list(l)) lapply(l, renquote) else enquote(l); lapply(unlist(renquote(list0)), eval)来源:stackoverflow.com/a/19737149/8583393