У меня есть хороший список, который выглядит так:
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)
Который производит:
> 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"
Теперь я хочу поискать элементы каждого resultitem
.
Я хочу знать dbname
для каждой базы данных, которая имеет менее 10 count
(пример).
В этом случае это очень просто, так как в этом списке всего 3 элемента, но реальный список немного длиннее.
Это можно сделать просто с помощью цикла for. Но есть ли способ сделать это с какой-то другой функцией R (например, rapply)?
Моя проблема с этими применимыми функциями заключается в том, что они смотрят только на один элемент.
Если я сделаю grep, чтобы получить все элементы dbname
, я не смогу получить счетчик каждого элемента.
rapply(tmp, function(x) paste("Content: ", x))[grep("dbname", names(rapply(tmp, c)))]
У кого-нибудь есть идея получше, чем цикл for?