r - 重铸任何深度的嵌套列表
问题描述
假设这个简化的例子:
L <- list()
L$Foo <- list()
L$Foo$Bar <- list()
L$Foo$Bar$VAR <- TRUE
L$Lorem <- list()
L$Lorem$Ipsum <- list()
L$Lorem$Ipsum$Dolor <- list()
L$Lorem$Ipsum$Dolor$VAR <- TRUE
然后,我将使用reshape2::melt(L)
. 这将输出以下内容:
value L3 L2 L4 L1
1 TRUE VAR Bar <NA> Foo
2 TRUE Dolor Ipsum VAR Lorem
在对 value 列中的某些单元格进行一些操作之后,我希望将这个融化的列表重新转换为与嵌套列表结构完全相同的嵌套列表结构L
——唯一的区别是我更新了一些value
实例。
任何想法如何实现这一目标?请记住,嵌套列表可以有任何不同的深度。
解决方案
一个选项是relist
,在我们unlist
编辑之后L
tmp <- unlist(L)
# make small changes
tmp[] <- FALSE
relist(tmp, L)
结果
$Foo
$Foo$Bar
$Foo$Bar$VAR
[1] FALSE
$Lorem
$Lorem$Ipsum
$Lorem$Ipsum$Dolor
$Lorem$Ipsum$Dolor$VAR
[1] FALSE
L
好像
$Foo
$Foo$Bar
$Foo$Bar$VAR
[1] TRUE
$Lorem
$Lorem$Ipsum
$Lorem$Ipsum$Dolor
$Lorem$Ipsum$Dolor$VAR
[1] TRUE
推荐阅读
- python - 如何让random.randit在每次游戏重新开始时获得新号码
- scrum - 减少用户故事的想法
- c# - c# decimal object.ToString() 用空格替换小数点
- python - 执行 Jupyter 命令 'notebook' 时出错:[Errno 2] 没有这样的文件或目录,如何解决?
- javascript - 如何以编程方式设置输入值?问题:点击时价值消失
- pandas - Dask:从提交的作业中访问已发布的数据集
- java - Android:应用程序在从另一个类调用 toast 时崩溃
- c# - How to populate objects with relationship from datatable?
- sqlite - SQLiteStudio 自动插入值
- tensorflow - Tensorflow Keras Conv2D 多个过滤器