У меня есть список со списками как записи, например, так:рекурсивно извлечение объектов в Вернах в списке
A <- list(scores1 = list(a = "a", b = "b"), scores2 = list(a = "c", b = "d"), scores3 = list(a = "e", b = "f"))
B <- list(scores1 = list(a = "aa", b = "bb"), scores2 = list(a = "cc", b = "dd"), scores3 = list(a = "ee", b = "ff"))
C <- list(scores1 = list(a = "aaa", b = "bbb"), scores2 = list(a = "ccc", b = "ddd"), scores3 = list(a = "eee", b = "fff"))
ABC <- list(A, B, C)
я могу получить элементы scores1 следующим образом:
a1 <- lapply(ABC, "[", "scores1")
, который дает мне
[[1]]
[[1]]$scores1
[[1]]$scores1$a
[1] "a"
[[1]]$scores1$b
[1] "b"
[[2]]
[[2]]$scores1
[[2]]$scores1$a
[1] "aa"
[[2]]$scores1$b
[1] "bb"
[[3]]
[[3]]$scores1
[[3]]$scores1$a
[1] "aaa"
[[3]]$scores1$b
[1] "bbb"
Теперь, что я действительно хочу, это то, что находится в объектах «a», поэтому я ищу вызов, который дает мне
"a"
"aa"
"aaa"
Я могу сделать это в цикле, но это кажется довольно неэффективным. Как я могу извлечь эти значения? Я попытался
lapply(lapply(ABC, "[", "scores1"), "[", "a")
но возвращает только
[[1]]
[[1]]$<NA>
NULL
[[2]]
[[2]]$<NA>
NULL
[[3]]
[[3]]$<NA>
NULL
Что такое правильный способ сделать это?
отличное, именно то, что мне нужно, спасибо за помощь и объяснение, это правильно! –