2012-02-16 17 views
32

Hay una lista que me gustaría mostrar en un archivo de Excel como una sola cadena. Comienzo con una lista de caracteres.Cómo colapsar una lista de caracteres en una sola cadena en 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 

salida es la siguiente:

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

Así, en los tipos - hay una lista de caracteres ahora tengo que hacer en una sola cadena. Esto es lo que tengo hasta ahora, pero no es óptima:

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" 

por lo que quiero terminar con una buena cadena separada por medio de tubos u otro separador. (la última parte del código - es lo que quiero volver a escribir muy bien). Las tuberías son importantes y deben ser hechas correctamente.

+1

Estamos hablando de listas de caracteres (que aún está en subconjuntos a través de '[[') Si 'd' es una lista de caracteres, también puede' do.call ("pegar", c (d, sep = "|")) '. –

Respuesta

42

Puede hacerlo con paste función

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

pegar (tipos, colapso = "|") – userJT

4

Puede hacerlo con str_c función

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