Szukałem SO, ale nie mogłem znaleźć trafnej odpowiedzi.Lista list wyszukiwania i podzbiorów list
DanePróbka:
example.list <- list(list("a",list("b"),list("c")),list("c"))
Chciałbym listę zawierającą litery "C" podzbioru:
tu dostaje ostatni węzeł indeks, który zawiera litery "C":
check.a <- lapply(example.list, function(x) grep("c",x))
Jak mam uzyskać listę z powyższym indeksem? Lub w jaki sposób uzyskać listę?
Częścią uzyskania ostatnich węzłów z listy c (1,3) są poprzedzające węzły listy c (1,2).
EDIT: Pożądany wyjściowy: (coś takiego)
[[1]][[3]]
[[1]][[3]][[1]]
[1] "c"
[[2]]
[[2]][[1]]
[1] "c"
Jednak to, co potrzebne jest również, aby zrozumieć, z tym warunkiem indeksowania, jak mogę uzyskać podzbiór zagnieżdżonej listy? Użyj check.a
.
EDIT 2:
Więc oto indeksy list, które mogą być wykorzystane do podzbioru właściwego wykazu węzły:
first.list.index <- which(lapply(lapply(example.list, function(x) grep("c",x)),length)>0)
last.list.index <- unlist(lapply(example.list, function(x) grep("c",x)))
Idea jest taka: (nie pracuje, tak aby wykazać, co ja” m za)
lapply(list(a=first.list.index,b=last.list.index), function(a,b) example.list[[a]][[b]])
Edycja 3 (ostatniej edycji)
rzeczywiste dane Loo jaw tak: (I nadzieję na rozwiązanie z indeksowaniem I przewidzianego, to dlaczego ja zmniejszona na pytanie o to)
[[1]]
[[1]][[1]]
[1] "a"
[[1]][[1]]$data
[[1]][[2]]
[[1]][[2]][[1]]
[1] "b"
[[1]][[1]]$data
[[1]][[3]]
[[1]][[3]][[1]]
[1] "c"
[[1]][[1]]$data
[[2]]
[[2]][[1]]
[1] "c"
[[2]][[1]]$data
Przepraszam za ten bałagan!
Tutaj jest zmniejszona dput:
list(list(structure(list(name = "a", data = c("21016954")), .Names = c("name", "data"
)), structure(list(name = "b", data = c("17103795")), .Names = c("name", "data")), structure(list(name = "c",
data = c("38036543")), .Names = c("name", "data"))), list(structure(list(name = "c", data = c("42456597")), .Names = c("name","data"))))
Czy możesz pokazać żądany wynik? –
Spróbuj 'rapply (example.list, function (x) grep (" c ", x, value = TRUE))' – akrun
Hmmm ... Właśnie napisałem fajną funkcję, aby dopasować twoje poprzednie pożądane wyjście. Bummer ... –