[R-es] Optimizar paste0()?

Jorge I Velez jorgeivanvelez en gmail.com
Mie Dic 10 00:00:18 CET 2014


Muchas gracias a todos por las sugerencias.  Finalmente reinicie la maquina
y pude ejecutar el ejemplo de Carlos Gil en un tiempo "equivalente":

R> a <- sample(letters, 70e6, replace = T)
R> b <- sample(letters, 70e6, replace = T)
R> system.time(a.b <- paste0(a, ":", b, "-SNV"))
   user  system elapsed
 23.255   0.150  23.423
R> b <- sample(1:100, 70e6, replace = T)
R> system.time(a.b <- paste0(a, ":", b, "-SNV"))
   user  system elapsed
 38.226   0.291  38.549

En cuanto a mi "problema", con la ayuda de alguien aqui en la escuela
terminamos utilizando

JCSMR022175:~ velezjo$  grep -E '\trs\d+\t' input.txt | perl -lne '@a =
split("\t", $_); $a[3] =~ s/-//g; @b = split(/\//,$a[3]); print
"$a[2]\t$a[0]:$a[1]-SNV\t$b[0]\t".join("/", @b[1..$#b]);' > output.txt

Saludos cordiales,
Jorge.-



2014-12-10 2:35 GMT+11:00 Carlos Ortega <cof en qualityexcellence.es>:

> Hola,
>
> Otra forma, quizás algo más rápida, especialmente para unos conjuntos tan
> grandes, que la de sqldf es "data.table":
>
> library(data.table)
> x <- 1:3
> y <- 4:6
> d <- data.table(x, y)
> d[,z := paste(x,"-",y,sep="")]
>
> > d
>    x y   z
> 1: 1 4 1-4
> 2: 2 5 2-5
> 3: 3 6 3-6
>
> Y bueno, "dplyr" también es otra opción muy rápida...
> También, y recuerdo que hace tiempo también lo llegamos a hablar, existe
> la posibilidad de juntar las dos variables por fuera ejecutando un comando
> en la shell del Sistema Operativo (supongo que es Uniux/Linux)con
> "system()".
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> Saludos,
> Carlos Ortega
>
>
> El 9 de diciembre de 2014, 14:13, "Marcuzzi, Javier Rubén" <
> javier.ruben.marcuzzi en gmail.com> escribió:
>
>> Mejor
>> sqldf("select x, y, x || ':' || y || '-ABC' as z from d")
>>
>> El 09/12/2014 a las 09:55 a.m., Jorge I Velez escibió:
>> > Gracias, Javier.
>> >
>> > Los datos "d" corresponden un archivo de texto de ~1.92GB.   Voy a
>> > explorar la posibilidad con sqldf, aunque confieso que mi conocimiento
>> > de SQL es bastante limitado.
>> >
>> > Saludos cordiales,
>> > Jorge.-
>> >
>> >
>> > 2014-12-09 23:50 GMT+11:00 "Marcuzzi, Javier Rubén"
>> > <javier.ruben.marcuzzi en gmail.com
>> > <mailto:javier.ruben.marcuzzi en gmail.com>>:
>> >
>> >     Estimado Jorge Velez
>> >
>> >     ¿Que pasa si usa sqldf que trabaja con sqlite o alguna conección a
>> >     base de datos y realiza una concateneción en sql?
>> >
>> >     Javier Marcuzzi
>> >
>> >     El 09/12/2014 a las 09:46 a.m., Jorge I Velez escibió:
>> >
>> >         Hola a todos,
>> >
>> >         Me gustaria construir un vector a partir de otros dos.
>> >
>> >         Ejemplo:
>> >
>> >         x <- 1:3
>> >         y <- 4:6
>> >         d <- data.frame(x, y)
>> >         d$z <- with(d, paste0(x, ":", y, "-ABC"))
>> >         d
>> >
>> >         El problema es "d" tiene ~70 millones de filas y toma mucho
>> tiempo
>> >         construir el vector "z".
>> >         Alguna sugerencia?
>> >
>> >         Muchas gracias,
>> >         Jorge Velez
>> >
>> >                 [[alternative HTML version deleted]]
>> >
>> >         _______________________________________________
>> >         R-help-es mailing list
>> >         R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>> >         https://stat.ethz.ch/mailman/listinfo/r-help-es
>> >
>> >
>> >     _______________________________________________
>> >     R-help-es mailing list
>> >     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>> >     https://stat.ethz.ch/mailman/listinfo/r-help-es
>> >
>> >
>>
>>
>>         [[alternative HTML version deleted]]
>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es