Ho una bella lista, che si presenta così:Come accedere agli elementi in un elenco complesso?
tmp = NULL
t = NULL
tmp$resultitem$count = "1057230"
tmp$resultitem$status = "Ok"
tmp$resultitem$menu = "PubMed"
tmp$resultitem$dbname = "pubmed"
t$resultitem$count = "305215"
t$resultitem$status = "Ok"
t$resultitem$menu = "PMC"
t$resultitem$dbname = "pmc"
tmp = c(tmp, t)
t = NULL
t$resultitem$count = "1"
t$resultitem$status = "Ok"
t$resultitem$menu = "Journals"
t$resultitem$dbname = "journals"
tmp = c(tmp, t)
che produce:
> str(tmp)
List of 3
$ resultitem:List of 4
..$ count : chr "1057230"
..$ status: chr "Ok"
..$ menu : chr "PubMed"
..$ dbname: chr "pubmed"
$ resultitem:List of 4
..$ count : chr "305215"
..$ status: chr "Ok"
..$ menu : chr "PMC"
..$ dbname: chr "pmc"
$ resultitem:List of 4
..$ count : chr "1"
..$ status: chr "Ok"
..$ menu : chr "Journals"
..$ dbname: chr "journals"
Ora voglio per la ricerca negli elementi di ogni resultitem
. Voglio conoscere lo dbname
per ogni database, che ha meno di 10 count
(esempio). In questo caso è molto facile, in quanto questa lista ha solo 3 elementi, ma la lista reale è un po 'più lunga.
Questo potrebbe essere fatto semplicemente con un ciclo for. Ma c'è un modo per farlo con qualche altra funzione di R (come il rapply)? Il mio problema con queste funzioni è che guardano solo un elemento.
Se eseguo un grep per ottenere tutti gli elementi dbname
, non riesco a ottenere il conteggio di ciascun elemento.
rapply(tmp, function(x) paste("Content: ", x))[grep("dbname", names(rapply(tmp, c)))]
Qualcuno ha un'idea migliore di un ciclo for?
Perdonami, ma perché stai utilizzando queste strutture di elenco scomode anziché un frame di dati? –