2012-02-16 14 views
32

Istnieje lista, którą chciałbym wypisać do pliku Excela jako pojedynczy ciąg. Zacznę od listy znaków.Jak zwinąć listę znaków w jeden ciąg w 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 

wyjściowa jest taka:

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

Więc typów - tam znajduje się lista znaków teraz muszę zrobić w jeden ciąg. To, co mam tak daleko, ale to nie jest optymalna:

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" 

Więc chcę skończyć z ładnym ciąg oddzielonych rur lub innym separatorem. (ostatnia część kodu - jest to, co chcę ładnie przepisać). Rury są ważne i muszą być właściwie wykonane.

+1

Mówisz o listach znaków (masz nawet podzbiorów poprzez '[['). Jeśli 'd' jest listą znaków, możesz również' do.call ("wklej", c (d, sep = "|")) '. –

Odpowiedz

42

Można to zrobić z paste funkcji

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

wklej (typy, zwiń = "|") – userJT

4

można to zrobić z str_c funkcji

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