извлекать древовидные данные в список в R - PullRequest
0 голосов
/ 15 сентября 2018

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

Т.е.: Я хочу получить все записи для каждой роли (т. Е. приложение , биологическая роль и химическая роль ) в структуре списка в R.

enter image description here

Для этого я получаю данные через 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 без потери древовидной структуры?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...