web-dev-qa-db-fra.com

Comment réduire une liste de caractères en une seule chaîne dans R

Il y a une liste que je voudrais sortir dans un fichier Excel comme une seule chaîne. Je commence par une liste de personnages.

  url="http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=21558518&retmode=xml"
  xml = xmlTreeParse(url,useInternal = T)
  ns <- getNodeSet(xml, '//PublicationTypeList/PublicationType')  
  types <- sapply(ns, function(x) { xmlValue(x) } )  
  types

La sortie est la suivante:

[1] "Journal Article"                      "Multicenter Study"                    "Research Support, N.I.H., Extramural"
[4] "Research Support, Non-U.S. Gov't"    

Donc, dans les types - il y a une liste de caractères Maintenant, je dois en faire une seule chaîne. C'est ce que j'ai jusqu'à présent mais ce n'est pas optimal:

 types_as_string = as.character(types[[1]])
      if (length(types) > 1) for (j in 2:length(types))   types_as_string = paste(types_as_string,"| ",as.character(types[[j]]),sep="")
 types_as_string          
 [1] "Journal Article| Multicenter Study| Research Support, N.I.H., Extramural| Research Support, Non-U.S. Gov't"

Je veux donc finir avec une belle chaîne séparée par des tuyaux ou un autre séparateur. (la dernière partie du code - c'est ce que je veux bien réécrire). Les tuyaux sont importants et doivent être correctement réalisés.

36
userJT

Vous pouvez le faire avec la fonction paste

    > paste(c('A', 'B', 'C'), collapse=', ' )
    [1] "A, B, C"
53
ilya

Vous pouvez le faire avec str_c une fonction

> library('stringr')
> str_c(c('A','B','C'),collapse=',')    
[1] "A,B,C"
5
Chernoff