Buenas a todos. Desde hace un tiempo estoy tratando de aplicar las funciones de la familia *pply en todo lo que puedo, pero todavía no es algo que me surja tan rápidamente o naturalmente al momento de los loops como usar for(). Conozco las ventajas de usar estas funciones y por eso mi intento de hacerme de ellas.
Por ejemplo en este problema: data=matrix(rnorm(100*20),20,100) col=sample(1:100,100) t1=Sys.time() medias=replicate(1000,{ sel=sample(1:20,10) pareja=sample(sel,100,replace = T) ta=Sys.time() *recep=NULL** ** for(i in 1:100){** ** n=col[i]** ** m=pareja[i]** ** c=data[m,n]** ** recep=c(recep,c)** ** }** * tb=Sys.time() media=mean(recep) tt=tb-ta c(media,tt) }) t2=Sys.time() diftime=(t2-t1)[[1]] sum(medias[2,])/diftime la parte que está en negrita (si usé bien los Sys.time()) me representa (hice varias pruebas) aprox un 60% del tiempo total empleado. Mi pregunta es, para este ejemplo ¿cómo plantearían una solución usando funciones *pply? Y luego ver cuanto aumenta en el rendimiento del uso del tiempo. De paso, la salida que obtengo es una matriz de 2 por 1000, cuando sería más interesante una matriz de 1000 por 2. Si se usa simplify = F como argumento de replicate() resulta en una lista. ¿Existe algún argumento que directamente obtenga una matriz de 1000 por 2? (Esto último pensando en de repente 100000 o 1000000 de repeticiones y salidas más complejas). Saludos! -- Fernando Macedo [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es