Concatenar un vector de cadenas / caracteres

Si tengo un vector de tipo carácter, ¿cómo puedo concatenar los valores en una cadena? Así es como lo haría con paste () :

sdata = c('a', 'b', 'c') paste(sdata[1], sdata[2], sdata[3], sep ='') 

produciendo "abc" .

Pero, por supuesto, eso solo funciona si conozco la longitud de sdata con anticipación.

Intenta usar un argumento de colapsar vacío dentro de la función de pegar:

paste(sdata, collapse = '')

Gracias a http://twitter.com/onelinetips/status/7491806343

La respuesta de Matt es definitivamente la respuesta correcta. Sin embargo, aquí hay una solución alternativa para fines de comic relief:

 do.call(paste, c(as.list(sdata), sep = "")) 

Para sdata :

 gsub(", ","",toString(sdata)) 

Para un vector de enteros:

 gsub(", ","",toString(c(1:10))) 

Puede usar la función stri_paste con el parámetro collapse del paquete stringi como este:

 stri_paste(letters, collapse='') ## [1] "abcdefghijklmnopqrstuvwxyz" 

Y algunos puntos de referencia:

 require(microbenchmark) test < - stri_rand_lipsum(100) microbenchmark(stri_paste(test, collapse=''), paste(test,collapse=''), do.call(paste, c(as.list(test), sep=""))) Unit: microseconds expr min lq mean median uq max neval stri_paste(test, collapse = "") 137.477 139.6040 155.8157 148.5810 163.5375 226.171 100 paste(test, collapse = "") 404.139 406.4100 446.0270 432.3250 442.9825 723.793 100 do.call(paste, c(as.list(test), sep = "")) 216.937 226.0265 251.6779 237.3945 264.8935 405.989 100 

La respuesta de Matt Turner es definitivamente la respuesta correcta. Sin embargo, en el espíritu de la respuesta de Ken Williams, también podrías:

 capture.output(cat(sdata, sep=""))