Buenas, Quiero ver si he paralelizado correctamente el proceso. Tengo dos dataframes, A y B y quiero calcular la distancia euclídea de todas las filas de A sobre todas las filas de B. Para ello he hecho lo siguiente #cargo las librerias library(foreach) library(doParallel) #establezco el numero de clusters, en mi caso 4, ya que el procesador tiene 4 nucleos cl<-makeCluster(4) registerDoParallel(cl) #Creo los dataframes A<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10)) B<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10)) #calculo las distancias foreach(j in 1:nrow(B),.combine="cbind") %:% foreach(i in 1:nrow(A),.combine="c") %dopar% { sqrt(sum((A[i,]-B[j,])^2)) } ¿Cómo lo veis? Un saludo Jesús [[alternative HTML version deleted]]
Buenas tardes, Jesús. Inicialmente no me funcionó tu código. Al hacer algunas correcciones foreach(j = 1:nrow(B),.combine="cbind")%:% foreach(i = 1:nrow(A),.combine="c") %dopar%{ sqrt(sum((A[i,]-B[j,])^2)) } obtuve una matriz de 10x10. Es eso lo que buscas? Saludos, Jorge.- 2017-08-13 15:40 GMT-05:00 Jesús Para Fernández < j.para.fernandez en hotmail.com>:> Buenas, > > > Quiero ver si he paralelizado correctamente el proceso. Tengo dos > dataframes, A y B y quiero calcular la distancia euclídea de todas las > filas de A sobre todas las filas de B. Para ello he hecho lo siguiente > > #cargo las librerias > > library(foreach) > > library(doParallel) > > #establezco el numero de clusters, en mi caso 4, ya que el procesador > tiene 4 nucleos > > cl<-makeCluster(4) > registerDoParallel(cl) > > > #Creo los dataframes > > A<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10)) > > B<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10)) > > > #calculo las distancias > > foreach(j in 1:nrow(B),.combine="cbind") %:% > > foreach(i in 1:nrow(A),.combine="c") %dopar% { > > sqrt(sum((A[i,]-B[j,])^2)) > > } > > > > ¿Cómo lo veis? > > > Un saludo > > Jesús > > [[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]]
Cierto, fallo porque puse en el bucle foreach un in en lugar de un =. Lo que busco es ver si he paralelizado bien el proceso o no.... ¿Como puedo saber si lo he paralelizado bien? Gracias!!! Jesús ________________________________ De: Jorge I Velez <jorgeivanvelez en gmail.com> Enviado: domingo, 13 de agosto de 2017 22:51 Para: Jesús Para Fernández Cc: r-help-es en r-project.org Asunto: Re: [R-es] Paralelizar el cálculo de distancias Buenas tardes, Jesús. Inicialmente no me funcionó tu código. Al hacer algunas correcciones foreach(j = 1:nrow(B),.combine="cbind")%:% foreach(i = 1:nrow(A),.combine="c") %dopar%{ sqrt(sum((A[i,]-B[j,])^2)) } obtuve una matriz de 10x10. Es eso lo que buscas? Saludos, Jorge.- 2017-08-13 15:40 GMT-05:00 Jesús Para Fernández <j.para.fernandez en hotmail.com<mailto:j.para.fernandez en hotmail.com>>: Buenas, Quiero ver si he paralelizado correctamente el proceso. Tengo dos dataframes, A y B y quiero calcular la distancia euclídea de todas las filas de A sobre todas las filas de B. Para ello he hecho lo siguiente #cargo las librerias library(foreach) library(doParallel) #establezco el numero de clusters, en mi caso 4, ya que el procesador tiene 4 nucleos cl<-makeCluster(4) registerDoParallel(cl) #Creo los dataframes A<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10)) B<-as.data.frame(matrix(rnorm(50,10,2),ncol=5,nrow=10)) #calculo las distancias foreach(j in 1:nrow(B),.combine="cbind") %:% foreach(i in 1:nrow(A),.combine="c") %dopar% { sqrt(sum((A[i,]-B[j,])^2)) } ¿Cómo lo veis? Un saludo Jesús [[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 [[alternative HTML version deleted]]