r - R 中基于元素名称的子集嵌套列表

标签 r list subset

我有 3 个列表,分别称为 T1、T2 和 T3(如下所示)。我想从这些列表中提取一个子集 Q

L1<-list("A"=matrix(c(1:4),2),"B"=matrix(c("a","b","c","d"),2))
L2<-list("P"=matrix(c(5:8),2),"Q"=list(list("u","v","w","x"),2))

T1 <- list(L1, L2)
T2 <- list(NULL, L1, L2)
T3 <- list(L1, NULL, L2)

我需要的输出只是嵌入在父列表(T1、T2 和 T3)中的列表 Q

以下是我尝试过的解决方案,但它们都为 Q 的同级返回 NULL 值 -

lapply(T3, `[[`, "Q")
purrr::map(T3, `[`, "Q")
purrr::map_depth(T3, 2, "Q")

请提出一个从父项 T1、T2 和 T3 中提取子集 Q 的解决方案。正如您所看到的,Q 在每个父级中的位置都不同,我正在寻找一种通过子名称 Q 来子集父级列表的解决方案,而不是对 Q 的位置进行硬编码。

最佳答案

您可以使用recursive = FALSE取消列出父列表,并获取单个合并列表。然后您可以访问Q:

unlist(T1, recursive = FALSE)$Q
unlist(T2, recursive = FALSE)$Q
unlist(T3, recursive = FALSE)$Q

关于r - R 中基于元素名称的子集嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70982734/

相关文章:

java - 如何实现适配器并过滤结果?

r - 子集data.table由R中的日期范围设置

python - R 和 Python 中的广义线性模型给出与 MATLAB 中不同的结果

r - 如何在不执行 sum 或 mean 之类的函数的情况下 reshape data.table(从长到宽)?

r - 在 ggplot2 中使用 `facet_grid` 时突出显示/在一些图周围画一个框

r - 统计学习在 R 图代码中的应用介绍

python - 在Python中用 "gaps"模拟一个数组

list - 将函数列表应用于普通 lisp 中的列表

C++ 返回 vector

算法:添加新元素时如何找到集合的子集?