我得到了一个列表列表。 我现在想根据子列表的名称对列表进行子集化。
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/