r - 如何根据名称对列表的列表进行子集化

标签 r list subset

我得到了一个列表列表。 我现在想根据子列表的名称对列表进行子集化。

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

我现在想根据名称选择子列表的元素。例如

select_names <- c("A")

并获取列表的列表,而子列表现在仅包含名称属于“select_names”的元素。在这种情况下,它只是元素“A”:

[[1]]
[[1]]$`A`
     [,1] [,2]
[1,]    1    3
[2,]    2    4


[[2]]
[[2]]$`A`
     [,1] [,2]
[1,]    5    7
[2,]    6    8

最佳答案

我们可以提取

library(purrr)
map(L, `[`, select_names)
#[[1]]
#[[1]]$A
#     [,1] [,2]
#[1,]    1    3
#[2,]    2    4


#[[2]]
#[[2]]$A
#     [,1] [,2]
#[1,]    5    7
#[2,]    6    8

或者使用lapply

lapply(L, function(x) x[select_names])

或者没有匿名函数调用

lapply(L, `[`, select_names)

关于r - 如何根据名称对列表的列表进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776245/

相关文章:

每个站点和日期随机子集 1 个观察

r - 过滤或子集化数据框不包含所有值

r - 在ggplot2中制作带有离散x轴的线图

python - 在 Python 中创建两组列表的所有组合

R:set.seed()的异常行为

c# - 通过标签创建许多对象的数组/列表(最初未知数量)

使用虚拟节点连接 2 个单链表

python-3.x - 如何按日期时间列中的单个日期对 pandas 数据框列进行子集化?

R 网络抓取检测单个国家/地区的最高数字 GADM.org 级别

windows - R 脚本自动化时的不同结果