从R中数据框内的列表内的数据框中提取行

时间:2017-12-04 20:39:21

标签: r packages pubmed

我在R中使用RIS包,以便从PubMed获取信息。 'Mesh'包函数允许我获得每个引文的MeSH术语。然而,它是一个List,包含一个数据框。 我想列出每个MeSH术语以及相应的引用ID(PMID)。 例如,我可以构造一个包含两个值的表:

table = cbind(ArticleId(MedlineObject),Mesh(MedlineObject))

第一列是char对象,第二列是包含数据帧的列表。如果第1栏内的值为“29145282”,第2栏的内容为“心肌病,肥厚症”,“综合模态疗法”和“诊断,鉴别”,我想获得:

"29145282","Cardiomyopathy, Hypertrophic"
"29145282","Combined Modality Therapy"
"29145282","Diagnosis, Differential"

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:1)

我想使用myeloma作为medline object的示例,因为我没有您的数据。 myelomaRISmed包中的中间线数据。

首先按mapplycbind将ID添加到列表中的所有数据框中:

MedList = mapply(cbind, "ID"=ArticleId(myeloma),Mesh(myeloma),SIMPLIFY = FALSE)

然后按do.callrbind将所有列表合并到一个数据框中:

MedFrame = do.call("rbind",MedList)

你只需要改变骨髓瘤'在你自己的MedlineObject的代码中

答案 1 :(得分:0)

查看tidyrtibble个软件包。请务必查看nest()unnest()函数。没有可重复的例子,我无法给你更多的建议。

x = 1:5
data <- lapply(x, function(i){
  data.frame(y = 1:5 * i)
})

temp = tibble::tibble(x, data)
temp
tidyr::unnest(temp)