Hola, ¿qué tal? Puedes hacer
data <- matrix(rnorm(100 *20), 100, 20) medias <- replicate(1000,{ sel <- sample(1:20,10) tmp <- data[cbind(sel, sample(sel,100,replace = T))] mean(tmp) }) Mira el párrafo de ?"]" que comienza diciendo "A third form of indexing..." Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 19 de marzo de 2015, 1:01, Fernando Macedo <ferm...@gmail.com> escribió: > 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 _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es