[R-es] Paralelizar el cálculo de distancias

Jorge I Velez jorgeivanvelez en gmail.com
Dom Ago 13 22:51:28 CEST 2017


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]]



Más información sobre la lista de distribución R-help-es