从R中dataframe内部的dataframe内部列表中提取行
为了从PubMed获取信息,我在R中使用包RISmed。“网格”包函数允许我获取每个引用的网格术语。然而,它是一个列表,包含一个数据帧。 我想列出每个网格术语及其相应的引用id(PMID)。 例如,我可以构造一个包含两个值的表:从R中dataframe内部的dataframe内部列表中提取行,r,packages,pubmed,R,Packages,Pubmed,为了从PubMed获取信息,我在R中使用包RISmed。“网格”包函数允许我获取每个引用的网格术语。然而,它是一个列表,包含一个数据帧。 我想列出每个网格术语及其相应的引用id(PMID)。 例如,我可以构造一个包含两个值的表: table = cbind(ArticleId(MedlineObject),Mesh(MedlineObject)) 第一列是一个char对象,但第二列是一个列表,包含一个dataframe。如果第1列中的值为“29145282”,第2列中的内容为“心肌病,肥大”,
table = cbind(ArticleId(MedlineObject),Mesh(MedlineObject))
第一列是一个char对象,但第二列是一个列表,包含一个dataframe。如果第1列中的值为“29145282”,第2列中的内容为“心肌病,肥大”,“联合治疗”和“诊断,鉴别”,我希望获得:
"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)
x=1:5
数据我想用骨髓瘤
作为medline对象
的一个例子,因为我没有你的数据myeloma
是RISmed
软件包中的医疗数据
首先通过mappy
和cbind
将id添加到列表中的所有数据帧:
MedList = mapply(cbind, "ID"=ArticleId(myeloma),Mesh(myeloma),SIMPLIFY = FALSE)
MedFrame = do.call("rbind",MedList)
然后通过do将所有列表合并到一个数据帧中。调用和rbind
:
MedList = mapply(cbind, "ID"=ArticleId(myeloma),Mesh(myeloma),SIMPLIFY = FALSE)
MedFrame = do.call("rbind",MedList)
您只需将代码中的“骨髓瘤”更改为您自己的MedlineObject请尝试提供。至少包括生成MedlineObject
的代码。另外,table
不是一个很好的变量名(有一个同名函数)。嗨,neilfws,下面@TooYoung使用的例子很好。“table”确实不是一个好的变量名。这不是真的,只是一个例子。谢谢你让我听你这么说。你介意接受这个答案吗?我不能发表评论