重铸任意深度的嵌套列表

标签 r list reshape

假设这个简化的例子:

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

对值列中的某些单元格进行一些操作后,我希望将这个熔化列表重新转换为与 L 完全相同的嵌套列表结构 - 唯一的区别是我更新了一些value 实例的数量。

有什么想法可以实现这一目标吗?请记住,嵌套列表可以具有任意且不同的深度。

最佳答案

在我们取消列出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

关于重铸任意深度的嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66250453/

相关文章:

c - 如何使用字符串指针访问字符串的其余部分?

arrays - 如何在 Fortran 中通过 BLAS 加速高阶张量收缩的 reshape ?

regex - R + reshape : using colsplit w/regex

r - 如何管理 gtable() 的 t、b、l、r 坐标以正确绘制次要 y 轴的标签和刻度线

string - R 字符串解释 : why does "\040" get interpreted as "" and what other potential pitfalls could I come across in string interpretation?

r - 创建分层网络

python - Pandas 部分转置

r - 字符向量作为 R 脚本的参数

python - 从字典列表中删除重复的字典

python - 根据从字符串中删除的字符更新值