[R-es] Optimizar paste0()?
Carlos J. Gil Bellosta
cgb en datanalytics.com
Mar Dic 9 17:31:54 CET 2014
Hola, ¿qué tal?
Algunos números:
> a <- sample(letters, 70e6, replace = T)
> b <- sample(letters, 70e6, replace = T)
> system.time(a.b <- paste0(a, b))
user system elapsed
17.289 0.264 17.552
> b <- sample(1:100, 70e6, replace = T)
> system.time(a.b <- paste0(a, b))
user system elapsed
48.875 0.632 49.506
> system.time(a.b <- paste0(a, as.character(b)))
user system elapsed
48.255 0.588 48.842
Por debajo del minuto. Pero con 24GB de RAM, que es, diría, el factor
limitante. De hecho,
> object.size(a.b)
560124840 bytes
que es alrededor de medio GB.
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
El día 9 de diciembre de 2014, 17:12, "Marcuzzi, Javier Rubén"
<javier.ruben.marcuzzi en gmail.com> escribió:
> Jorge
>
> Creo que la opción de Carlos Ortega es mejor, si no recuerdo mal una vez
> vi una demostración sobre bigdata en la cual data.table tenía una
> performance que sorprendía sobre otras alternativas.
>
> Javier Marcuzzi
>
>
> El 09/12/2014 a las 12:35 p.m., Carlos Ortega escibió:
>> 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 <http://www.qualityexcellence.es>
>>
>> Saludos,
>> Carlos Ortega
>>
>>
>> El 9 de diciembre de 2014, 14:13, "Marcuzzi, Javier Rubén"
>> <javier.ruben.marcuzzi en gmail.com
>> <mailto: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>
>> > <mailto: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>
>> <mailto: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>
>> <mailto: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 <mailto:R-help-es en r-project.org>
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es <http://www.qualityexcellence.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
Más información sobre la lista de distribución R-help-es