0

我在 R 中使用包 RISmed 以从 PubMed 获取信息。'Mesh' 包功能允许我获得每个引文的 MeSH 术语。然而它是一个列表,包含一个数据框。除了相应的引用 ID (PMID) 之外,我还想列出每个 MeSH 术语。例如,我可以构建一个包含两个值的表:

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

第一列是一个 char 对象,但第二列是一个列表,包含一个数据框。如果第 1 列中的值为“29145282”,第 2 列的内容是“心肌病,肥厚”,“联合治疗”和“诊断,鉴别”,我想获得:

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

我怎么能做到这一点?

4

2 回答 2

1

因为我没有你的数据,所以我想myeloma以此为例。是包内的medline数据。medline objectmyelomaRISmed

mapply首先通过and将 id 添加到列表中的所有数据帧中cbind

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

do.call然后通过and将所有列表合并到一个数据帧中rbind

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

您只需将代码中的“骨髓瘤”更改为您自己的 MedlineObject

于 2017-12-04T21:05:33.557 回答
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)
于 2017-12-04T20:56:00.467 回答