R-从数据框

时间:2015-08-20 21:56:19

标签: r list

我有一个数据框(下面) { a<-as.data.frame(entrez_db_searchable(db = "pubmed", config = NULL)) }

  Name          FullName        
1  ALL          All Fields        
2  UID          UID        
3 FILT          Filter        
4 TITL          Title        
5 WORD          Text Word        
6 MESH          MESH Terms

MeSH条款

我想访问a$FullName中的所有元素。结果看起来像列表的列表。

$ALL 
[1] "All Fields"
$UID
 [1] "UID"
 $FILT
 [1] "Filter"

依旧......

我正尝试以下列格式访问列表中的扩展条款,但未成功 a <- some_simple_function(df$FullName) 打印(一) 存储在1x1列中的扩展术语的输出(每个术语的每一行)。

Full Name
1  All Fields
2  UID
3  Filter
4  Title
5  MeSH Terms 

依旧.....

如果有人能帮助我,我感激不尽。 注意:我尝试了以下内容 1)for循环。 (更喜欢看看是否有比循环更好的方法) 2)do.call("paste", c(a$FullName, sep = "\n"))粘贴无法识别新行&#34; \ n&#34;论点。 3)cat(do.call("paste", c(a$FullName, sep = "\n"))),打印出我正在寻找的确切输出,但它是一个打印语句。我需要将输出存储在另一个变量中。

2 个答案:

答案 0 :(得分:1)

我无法让您的示例数据框架正常工作,但这对我有用:

library(rentrez)
a<-as.data.frame(entrez_db_searchable(db = "pmc", config = NULL))

为了处理a$FullName返回1元素向量列表的事实,您可以使用unlist来获取名称的向量:

data.frame(FullName=unlist(a[,"FullName"]))
#                         FullName
# ALL                   All Fields
# UID                          UID
# FILT                      Filter
# PMID                   PubMed ID
# AUTH                      Author
# ...

答案 1 :(得分:0)

https://purrr.tidyverse.org/reference/flatten.html

flatten()是完成unlist()

的一种整洁方法

这应该有效:

a %>%
  transmute(
  FullName = flatten_chr(FullName)
  )