Я хотел бы прочитать данные JSON из PubChem-API на парацетамоле и извлечь 18.1.2 Онтология ChEBI информация, которая там хранится (см. Скриншот).
Т.е.: Я хочу получить все записи для каждой роли (т. Е. приложение , биологическая роль и химическая роль ) в структуре списка в R.

Для этого я получаю данные через API и преобразовываю их вR объект (chebi
).Пока все хорошо.
require(httr)
require(jsonlite)
require(data.tree)
# from JSON to R list
qurl = 'https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/classification/JSON?classification_type=simple'
cid = 1983
post = POST(qurl, body = list("cid" = paste(cid, collapse = ',')))
cont_json = try(content(post, type = 'text', encoding = 'UTF-8'), silent = FALSE)
cont = fromJSON(cont_json, simplifyDataFrame = FALSE)
# subset list (i.e. get CHEBI data)
cont_l = cont$Hierarchies$Hierarchy
idx = which(sapply(cont_l, function(x) x$SourceName == 'ChEBI'))
chebi = cont_l[[idx]]
Затем из объекта chebi
я хочу получить информацию о том, какие записи каждая роль (то есть приложение , биологическая роль , химическая роль ) содержит.
(1) Моей первой идеей было просто извлечь информацию об Имени.Однако затем я теряю древовидную структуру данных и не знаю, к какой роли принадлежит .
ch_node = chebi$Node
sapply(ch_node, function(x) x$Information$Name)
(2) Во-вторых, я увидел, что есть data.tree
пакет.Однако я не знаю, как правильно преобразовать объект chebi
.
chebi_tree = as.Node(ch_node) #?
Вопрос: Как я могу получить информацию role из chebi
объект в список в R без потери древовидной структуры?