r - R:重新列出非递归命名嵌套列表
问题描述
relist()
当列表没有递归展平时,该函数(默认情况下)不会重新列出。例如
> my_list=list(a=list(aa=c(1,2),ab=2),b=list(ba=1,bb=2))
> flat=unlist(as.relistable(my_list),recursive=FALSE)
Warning message:
In unlist.relistable(x, recursive, use.names) :
relist() requires recursively unlisted objects.
>relist(flat)
$a
$a$aa
$a$aa[[1]]
[1] 1 2
$a$aa[[2]]
[1] 2
$a$ab
$a$ab[[1]]
[1] 1
$b
$b$ba
$b$ba[[1]]
[1] 2
$b$bb
$b$bb[[1]]
NULL
我想出了一个部分答案并且似乎可以工作,但是有没有更好和完整的方法来做到这一点?
解决方案
使用您的非递归未列出列表,您可以再次制作unlist
并将存储的骨架用于relist
.
relist(unlist(flat), attr(flat,"skeleton"))
#$a
#$a$aa
#[1] 1 2
#
#$a$ab
#[1] 2
#
#
#$b
#$b$ba
#[1] 1
#
#$b$bb
#[1] 2
#
#
#attr(,"class")
#[1] "relistable" "list"
推荐阅读
- c# - 具有成对限制的列表的 FsCheck 生成器 (C#)
- python - 使用 oauth2 为 Google Play Developer API 授权服务帐户
- android - MPChart BarChart X 轴标签问题
- python - Python 拼字游戏。如何以不正确的响应循环?
- firebase - 如何将域从 www.test.tk 重定向到 https://test.tk
- c# - 同时发送多封电子邮件
- file - 如何以递归方式打开在另一个文件中找到名称的文件
- amazon-web-services - 是否可以将 AWS Cognito 开发人员身份用于 AWS AppSync?
- javascript - 如何在 xmlhttprequest 中发送 jwt?
- c++ - constexpr 说明符性能没有达到我在 C++ 中的期望