vectores vacio repeticiones listas ejemplos data crear contar concatenar columnas arreglos r string r-faq

vacio - listas en r



Concatenar un vector de cuerdas/personaje (5)

Intente usar un argumento de colapso vacío dentro de la función de pegar:

paste(sdata, collapse = '''')

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

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 antes de tiempo.


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ía hacer:

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


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

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 de stringi 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