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 = '')
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=""))