代码之家  ›  专栏  ›  技术社区  ›  user5249203

R-从数据帧访问列表列表

  •  0
  • user5249203  · 技术社区  · 10 年前

    我有一个从
    { 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) 打印(a) 存储在1x1列中的扩展项的输出(每个项的每行)。

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

    等等

    如果有人能帮我,我很感激。 注意:我尝试了以下操作 1) for循环。(更愿意看看是否有比for循环更好的方法) 2) do.call("paste", c(a$FullName, sep = "\n")) 粘贴无法识别新行“\n”参数。 3) cat(do.call("paste", c(a$FullName, sep = "\n"))) ,打印出我要查找的确切输出,但它是一个打印语句。我需要将输出存储在另一个变量中。

    2 回复  |  直到 10 年前
        1
  •  1
  •   josliber Martin Ballet    10 年前

    我不太能让你的示例数据框架工作,但这对我很有用:

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

    为了应对以下事实: a$FullName 返回一个单元素向量列表,可以使用 unlist 获取名称的矢量:

    data.frame(FullName=unlist(a[,"FullName"]))
    #                         FullName
    # ALL                   All Fields
    # UID                          UID
    # FILT                      Filter
    # PMID                   PubMed ID
    # AUTH                      Author
    # ...
    
        2
  •  0
  •   Nick    6 年前

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

    flatten() 是一种整洁的做法 unlist()

    这应该是有效的:

    a %>%
      transmute(
      FullName = flatten_chr(FullName)
      )
    
    推荐文章