Как свернуть список символов в одну строку в R - PullRequest
36 голосов
/ 16 февраля 2012

Есть список, который я хотел бы вывести в файл Excel в виде одной строки.Я начинаю со списка символов.

  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

Вывод такой:

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

Так что в типах - есть список символов Теперь мне нужно составить одну строку.Это то, что я имею до сих пор, но это не оптимально:

 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"

Так что я хочу в итоге получить хорошую строку, разделенную трубами или другим разделителем,(последняя часть кода - это то, что я хочу переписать красиво).Трубы важны, и они должны быть сделаны правильно.

Ответы [ 2 ]

51 голосов
/ 16 февраля 2012

Вы можете сделать это с помощью функции paste

    > paste(c('A', 'B', 'C'), collapse=', ' )
    [1] "A, B, C"
5 голосов
/ 12 марта 2014

Вы можете сделать это с помощью функции str_c

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