An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/2a774013/attachment.pl>
[R-es] help: Bucles rápidos en R
20 messages · Javier Villacampa González, Fernando Fernández, Javier Marcuzzi +6 more
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/38059f4e/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/d8ddb238/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/077f6391/attachment.pl>
Estimado González Si. Compilando. Yo realicé una prueba muy sencilla es es mucho más veloz, claro, esta posibilidad existe en la última versión de R. Javier Marcuzzi -----Mensaje original----- From: Javier Villacampa González Sent: Tuesday, June 12, 2012 9:32 AM To: r-help-es en r-project.org Subject: [R-es] help: Bucles rápidos en R Buenas dÃas a todos, una vez más os escribo para preguntaros una duda. Estoy haciendo bucles con data frames, el problema es que al hacer bucles de esta manera el sistema se relentiza. He buscado por internet y en varias web te dicen que evites los bucles en la medida de lo posible y que intentes funcionar con c++ con la librerÃa Rccp http://cran.r-project.org/web/packages/Rcpp/Rcpp.pdf. Mi preguta es 1 Se puede acelerar el proceso dentro de R si irme a otro lenguaje 2 Alguna página con ejemplitos fáciles de Rccp. Como ya veis tengo la duda a medio madurar, pero si me podeis dar un empujón os lo agradeceré. Un saludo y gracias por adelantado. _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/81871a3e/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/c7bc38bd/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/93d6c6d5/attachment.pl>
Estimados
No se si responde la pregunta original, pero busque el ejemplo de como
compilar en R, utiliza algunas funciones sencillas, sin embargo nunca lo
probé con un data.frame, aunque pienso que podrÃa funcionar.
# a simple example
f <- function(x) x+1
fc <- cmpfun(f)
fc(2)
disassemble(fc)
# old R version of lapply
la1 <- function(X, FUN, ...) {
FUN <- match.fun(FUN)
if (!is.list(X))
X <- as.list(X)
rval <- vector("list", length(X))
for(i in seq(along = X))
rval[i] <- list(FUN(X[[i]], ...))
names(rval) <- names(X) # keep `names' !
return(rval)
}
# a small variation
la2 <- function(X, FUN, ...) {
FUN <- match.fun(FUN)
if (!is.list(X))
X <- as.list(X)
rval <- vector("list", length(X))
for(i in seq(along = X)) {
v <- FUN(X[[i]], ...)
if (is.null(v)) rval[i] <- list(v)
else rval[[i]] <- v
}
names(rval) <- names(X) # keep `names' !
return(rval)
}
# Compiled versions
la1c <- cmpfun(la1)
la2c <- cmpfun(la2)
# some timings
x <- 1:10
y <- 1:100
system.time(for (i in 1:10000) lapply(x, is.null))
system.time(for (i in 1:10000) la1(x, is.null))
system.time(for (i in 1:10000) la1c(x, is.null))
system.time(for (i in 1:10000) la2(x, is.null))
system.time(for (i in 1:10000) la2c(x, is.null))
system.time(for (i in 1:1000) lapply(y, is.null))
system.time(for (i in 1:1000) la1(y, is.null))
system.time(for (i in 1:1000) la1c(y, is.null))
system.time(for (i in 1:1000) la2(y, is.null))
system.time(for (i in 1:1000) la2c(y, is.null))
Javier Marcuzzi
-----Mensaje original-----
From: Fernando Fernández
Sent: Tuesday, June 12, 2012 10:19 AM
To: Javier Villacampa González
Cc: r-help-es en r-project.org
Subject: Re: [R-es] help: Bucles rápidos en R
Las funciones apply, lapply, sapply, tapply son tus amigas... También es
bastante posible que estés haciendo tareas con bucles que se pueden
escribir con instrucciones matriciales y subÃndices. Del tipo:
x[x[>3]]<-3
en lugar de:
for(i in 1:length(x)){
if x[i]>3 then
x[i]<-3
}
Mi recomendacion es que antes de seguir programando te recorras los
ejemplos de dos o tres manuales diferentes que suelen tener ejemplos de
como aprovechar estas instrucciones en R (Los que puedes encontrar en CRAN
deberÃan servirte). Merece la pena invertir algo de tiempo en aprender a
sacarles partido.
El 12 de junio de 2012 14:32, Javier Villacampa González <
javier.villacampa.gonzalez en gmail.com> escribió:
Buenas dÃas a todos, una vez más os escribo para preguntaros una duda. Estoy haciendo bucles con data frames, el problema es que al hacer bucles de esta manera el sistema se relentiza. He buscado por internet y en varias web te dicen que evites los bucles en la medida de lo posible y que intentes funcionar con c++ con la librerÃa Rccp http://cran.r-project.org/web/packages/Rcpp/Rcpp.pdf. Mi preguta es 1 Se puede acelerar el proceso dentro de R si irme a otro lenguaje 2 Alguna página con ejemplitos fáciles de Rccp. Como ya veis tengo la duda a medio madurar, pero si me podeis dar un empujón os lo agradeceré. Un saludo y gracias por adelantado. [[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
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/ed2b8589/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/0ac0b705/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/becf835c/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/17da7bb7/attachment.pl>
QuerÃa decir x[x>3]<-3 casi seguro. Respecto al "for", coincido en lo que dice Jorge: desde hace unas cuantas versiones de R, la eficiencia de los bucles es pareja a la de las funciones apply y similares. En tiempos, es cierto, habÃa diferencias importantes. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 12 de junio de 2012 18:47, Eva Prieto Castro <evapcastro en yahoo.es> escribió:
Hola, ¿qué tal? Fernando, me interesa mucho la sugerencia que haces a Javier, pero no consigo llevarla a la práctica. Me da este error:
x[x[>3]] <- 3
Error: inesperado '>' en "x[x[>"
Por favor, ¿podrÃas poner un ejemplo desde cero?. Gracias.
Eva
--- El mar, 12/6/12, Fernando Fernández <fernando.fernandez.gonzalez en gmail.com> escribió:
De: Fernando Fernández <fernando.fernandez.gonzalez en gmail.com>
Asunto: Re: [R-es] help: Bucles rápidos en R
Para: "Javier Villacampa González" <javier.villacampa.gonzalez en gmail.com>
CC: r-help-es en r-project.org
Fecha: martes, 12 de junio, 2012 15:19
Las funciones apply, lapply, sapply, tapply son tus amigas... También es
bastante posible que estés haciendo tareas con bucles que se pueden
escribir con instrucciones matriciales y subÃndices. Del tipo:
x[x[>3]]<-3
en lugar de:
for(i in 1:length(x)){
if x[i]>3 then
x[i]<-3
}
Mi recomendacion es que antes de seguir programando te recorras los
ejemplos de dos o tres manuales diferentes que suelen tener ejemplos de
como aprovechar estas instrucciones en R (Los que puedes encontrar en CRAN
deberÃan servirte). Merece la pena invertir algo de tiempo en aprender a
sacarles partido.
El 12 de junio de 2012 14:32, Javier Villacampa González <
javier.villacampa.gonzalez en gmail.com> escribió:
Buenas dÃas a todos, una vez más os escribo para preguntaros una duda. Estoy haciendo bucles con data frames, el problema es que al hacer bucles de esta manera el sistema se relentiza. He buscado por internet y en varias web te dicen que evites los bucles en la medida de lo posible y que intentes funcionar con c++ con la librerÃa Rccp http://cran.r-project.org/web/packages/Rcpp/Rcpp.pdf. Mi preguta es 1 Se puede acelerar el proceso dentro de R si irme a otro lenguaje 2 Alguna página con ejemplitos fáciles de Rccp. Como ya veis tengo la duda a medio madurar, pero si me podeis dar un empujón os lo agradeceré. Un saludo y gracias por adelantado.     [[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
   [[alternative HTML version deleted]] -----Adjunto en lÃnea a continuación-----
_______________________________________________ R-help-es mailing list 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
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/a959ed6d/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120612/b0d80078/attachment.pl>
1 day later
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120614/68bb6432/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120614/0ffaf37b/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120614/a1f9b5af/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120614/df24135a/attachment.pl>