【发布时间】:2019-02-05 19:27:56
【问题描述】:
我有一个嵌套列表,想要过滤多个条件。我知道有人问过类似的问题,但由于某种原因,那里的方法在我的列表中不起作用,..
myList <- list(list(list(FileName = list("05_C13_1.mzML"), Molecule = "Adenine",
Adduct = list("2M+H"), cons.Area = list(42158.2196614537))),
list(list(FileName = list("05_C13_2.mzML"), Molecule = "Phenylalanine",
Adduct = list("2M+H"), cons.Area = list(36879.9850931971))),
list(list(FileName = list("10_C13_2.mzML", "10_C13_2.mzML"),
Molecule = "Adenine", Adduct = list("M+K", "M+K"), cons.Area = list(
512368.044002373, 60847.2653549584))))
这是我试过的功能:
get_sublist <- function(lst, group_name) {
lst[lapply(lst, function(x) x[[1]][[1]]) == group_name]
}
它在以下列表中效果很好,但由于我不明白的原因,我不明白(如果我用 x[[1]] 替换 x[[1]][[1]]),..
ThisListWorks <- list(list(list(group = "a", def = "control")), list(list(group = "b",
def = "disease1")))
我的示例所需的输出将是例如:
SubList1 <- get_sublist(myList, "Adenine")
SubList1
list(list(list(FileName = list("05_C13_1.mzML"), Molecule = "Adenine",
Adduct = list("2M+H"), cons.Area = list(42158.2196614537))),
list(list(FileName = list("10_C13_2.mzML", "10_C13_2.mzML"),
Molecule = "Adenine", Adduct = list("M+K", "M+K"), cons.Area = list(
512368.044002373, 60847.2653549584))))
或:
SubList2 <- get_sublist(myList, "10_C13_2.mzML")
SubList2
list(list(list(FileName = list("10_C13_2.mzML", "10_C13_2.mzML"),
Molecule = "Adenine", Adduct = list("M+K", "M+K"), cons.Area = list(
512368.044002373, 60847.2653549584))))
【问题讨论】:
标签: r list filter nested subset