2012-02-16 8 views
32

Có danh sách mà tôi muốn xuất thành tệp excel dưới dạng một chuỗi. Tôi bắt đầu với một danh sách các ký tự.Cách thu gọn danh sách các ký tự thành một chuỗi trong R

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 

Output là thế này:

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

Vì vậy, trong các loại - có một danh sách các nhân vật Bây giờ tôi cần phải thực hiện thành một chuỗi duy nhất. Đây là những gì tôi có cho đến nay nhưng nó không phải là tối ưu:

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" 

Vì vậy, tôi muốn kết thúc với một chuỗi đẹp cách nhau bởi ống dẫn hoặc tách khác. (phần mã cuối cùng - là những gì tôi muốn viết lại độc đáo). Các đường ống rất quan trọng và chúng phải được thực hiện đúng cách.

+1

Bạn đang nói về danh sách các nhân vật (bạn thậm chí Subsetting qua '[['). Nếu 'd' là danh sách các ký tự, bạn cũng có thể' do.call ("dán", c (d, sep = "|")) '. –

Trả lời

42

Bạn có thể làm điều đó với paste chức năng

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

dán (loại, thu gọn = "|") – userJT

4

Bạn có thể làm điều đó với str_c chức năng

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