将树状数据提取到R中的列表中

时间:2018-09-15 16:19:25

标签: r json list api

我想从扑热息痛的PubChem-API中读取JSON数据并提取其中存储的18.1.2 ChEBI Ontology信息(请参见屏幕截图)。

:我想获取每个角色的全部信息(即应用生物学角色化学作用)在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对象中,我想要检索每个角色(即 application biological role 化学作用)包含。

(1)我的第一个想法是简单地提取Name信息。但是,然后我松开了数据的树状结构,不知道什么属于哪个角色

ch_node = chebi$Node
sapply(ch_node, function(x) x$Information$Name)

(2)其次,我看到有data.tree软件包。但是我不知道如何正确转换chebi对象。

chebi_tree = as.Node(ch_node) #?

问题:如何从chebi对象获得角色信息到R中的列表中,而又不会丢失树状结构?

0 个答案:

没有答案