【发布时间】:2022-02-04 07:21:37
【问题描述】:
我有 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 的位置进行硬编码。
【问题讨论】:
-
那么所需输出的具体形状是什么?如果两个列表包含 Q 会发生什么?
-
永远不会发生
L1和L2都包含Q。所需的输出是一个列表Q。 -
更一般情况的可能重复:stackoverflow.com/questions/58400176/…
-
由于我的子对象是一个列表,您的解决方案似乎更合适。谢谢弗利克先生!