How to access elements in a complex list?
- by Martin
Hi,
it's me and the lists again.
I have a nice list, which looks like this:
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)
Which produces:
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"
Now I want to search through the elements of each "resultitem".
I want to know the "dbname" for every database, that has less then 10 "count" (example).
In this case it is very easy, as this list only has 3 elements, but the real list is a little bit longer.
This could be simply done with a for loop. But is there a way to do this with some other function of R (like rapply)?
My problem with those apply functions is, that they only look at one element.
If I do a grep to get all "dbname" elements, I can not get the count of each element.
rapply(tmp, function(x) paste("Content: ", x))[grep("dbname", names(rapply(tmp, c)))]
Does someone has a better idea than a for loop?
Thanx,
Martin