从R中数据框中的列表中的数据框中提取行
Extract rows from dataframe inside list inside dataframe in R
我在 R 中使用 RISmed 包来从 PubMed 获取信息。 'Mesh' 包函数允许我获取每个引用的 MeSH 术语。然而它是一个列表,包含一个数据框。
除了相应的引文 ID (PMID) 之外,我还想列出每个 MeSH 术语。
例如,我可以构造一个包含两个值的 table:
table = cbind(ArticleId(MedlineObject),Mesh(MedlineObject))
第一列是一个字符对象,第二列是一个列表,包含一个数据框。如果第 1 列内的值为“29145282”,第 2 列的内容为 "Cardiomyopathy, Hypertrophic"、"Combined Modality Therapy" 和 "Diagnosis, Differential",我想获得:
"29145282","Cardiomyopathy, Hypertrophic"
"29145282","Combined Modality Therapy"
"29145282","Diagnosis, Differential"
我怎样才能做到这一点?
查看 tidyr
和 tibble
包。请务必查看 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)
我想用 myeloma
作为 medline object
的例子,因为我没有你的数据。 myeloma
是 RISmed
包中的医学数据。
首先通过 mapply
和 cbind
:
将 id 添加到列表中的所有数据帧
MedList = mapply(cbind, "ID"=ArticleId(myeloma),Mesh(myeloma),SIMPLIFY = FALSE)
然后通过 do.call
和 rbind
:
将所有列表合并到一个数据帧中
MedFrame = do.call("rbind",MedList)
你只需要将代码中的'myeloma'改成你自己的MedlineObject
我在 R 中使用 RISmed 包来从 PubMed 获取信息。 'Mesh' 包函数允许我获取每个引用的 MeSH 术语。然而它是一个列表,包含一个数据框。 除了相应的引文 ID (PMID) 之外,我还想列出每个 MeSH 术语。 例如,我可以构造一个包含两个值的 table:
table = cbind(ArticleId(MedlineObject),Mesh(MedlineObject))
第一列是一个字符对象,第二列是一个列表,包含一个数据框。如果第 1 列内的值为“29145282”,第 2 列的内容为 "Cardiomyopathy, Hypertrophic"、"Combined Modality Therapy" 和 "Diagnosis, Differential",我想获得:
"29145282","Cardiomyopathy, Hypertrophic"
"29145282","Combined Modality Therapy"
"29145282","Diagnosis, Differential"
我怎样才能做到这一点?
查看 tidyr
和 tibble
包。请务必查看 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)
我想用 myeloma
作为 medline object
的例子,因为我没有你的数据。 myeloma
是 RISmed
包中的医学数据。
首先通过 mapply
和 cbind
:
MedList = mapply(cbind, "ID"=ArticleId(myeloma),Mesh(myeloma),SIMPLIFY = FALSE)
然后通过 do.call
和 rbind
:
MedFrame = do.call("rbind",MedList)
你只需要将代码中的'myeloma'改成你自己的MedlineObject