我得到了一个清单清单。 我现在想根据子列表的名称对列表进行子集化。
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
答案 0 :(得分:1)
我们可以Extract
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)
答案 1 :(得分:1)
自我提升。如果愿意使用软件包,我会在manymodelr的开发人员版本中编写一个便捷功能,实现相同功能。
manymodelr::get_this(A,L)
[[1]]
[,1] [,2]
[1,] 1 3
[2,] 2 4
[[2]]
[,1] [,2]
[1,] 5 7
[2,] 6 8