Tengo una lista agradable, que se ve así:¿Cómo acceder a los elementos en una lista compleja?
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)
que 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"
Ahora quiero buscar a través de los elementos de cada resultitem
. Quiero saber el dbname
para cada base de datos, que tiene menos de 10 count
(ejemplo). En este caso es muy fácil, ya que esta lista solo tiene 3 elementos, pero la lista real es un poco más larga.
Esto podría hacerse simplemente con un bucle for. Pero, ¿hay alguna manera de hacer esto con alguna otra función de R (como Rapply)? Mi problema con esas funciones de aplicación es que solo miran un elemento.
Si hago un grep para obtener todos los elementos dbname
, no puedo obtener el recuento de cada elemento.
rapply(tmp, function(x) paste("Content: ", x))[grep("dbname", names(rapply(tmp, c)))]
¿Alguien tiene una idea mejor que un ciclo for?
Perdóneme, pero ¿por qué está utilizando estas torpes estructuras de listas en lugar de un marco de datos? –