如何将字符列表折叠为R中的单个字符串

时间:2012-02-16 15:46:32

标签: string r string-concatenation

有一个列表我想作为单个字符串输出到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"
  

所以我想最后得到一个由管道或其他分隔符分隔的漂亮字符串。 (最后一个代码部分 - 我想要很好地重写)。管道很重要,必须妥善完成。

3 个答案:

答案 0 :(得分:49)

您可以使用paste功能

执行此操作
    > paste(c('A', 'B', 'C'), collapse=', ' )
    [1] "A, B, C"

答案 1 :(得分:5)

您可以使用str_c功能

执行此操作
> library('stringr')
> str_c(c('A','B','C'),collapse=',')    
[1] "A,B,C"

答案 2 :(得分:1)

最短的方法是使用基本的toString函数。无论如何,输出字符串都将包含逗号

vector<-c('A', 'B', 'C')

toString(vector)

如果您不想逗号

gsub(",","",toString(vector))

如果您需要任何其他分隔符,则可以在gsub中替换任何您喜欢的东西,而不用逗号代替逗号