Pregunta

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

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

flexible "abc".

Pero, por supuesto, eso sólo funciona si sé la duración de datos sda con anticipación.

¿Fue útil?

Solución

Trate de usar un elemento colapso argumento dentro de la función de pegado:

paste(sdata, collapse = '')

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

Otros consejos

La respuesta de Matt es sin duda la respuesta correcta. Sin embargo, aquí es una solución alternativa para el caso de socorro cómicas:

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

Se puede utilizar la función stri_paste con el parámetro collapse del paquete stringi como esto:

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

Para sdata:

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

Para obtener un vector de enteros:

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

La respuesta de Matt Turner es sin duda la respuesta correcta. Sin embargo, en el espíritu de respuesta Ken Williams, usted podría también hacer:

capture.output(cat(sdata, sep="")) 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top