[R-es] vectorizaciones

J. Miguel Marin jmmarin en est-econ.uc3m.es
Lun Dic 16 17:38:16 CET 2013


Hola a tod en s,

tengo que hacer una operación con matrices que lleva un doble bucle. He 
intentado vectorizarlo pero sin mucho éxito con la función "Vectorize".
¿sabríais de alguna manera de evitar los bucles o de que funcionase Vectorize?
Adjunto un ejemplo

#...................

vec1a <- as.vector(1:3)

n1a <- 3

n2a <- 3

P1a <- matrix(rnorm(30),nrow=3)

P2a <- matrix(rnorm(30),nrow=3)

Ka <- 10

# En forma de funcion

producto <- function(n1a,n2a,Ka,vec1a,P1a,P2a){

LLa = numeric(2*Ka)

for (i in 1:n1a){

   for (j in 1:n2a){

      LLa = LLa - vec1a%*%matrix(abs(P1a[i,]-P2a[j,]), 
nrow=length(vec1a), ncol=2*Ka, byrow=TRUE)

	  }

}

return(sum(LLa))

}


producto(n1a,n2a,Ka,vec1a,P1a,P2a)


vproducto <- Vectorize(producto)

vproducto(n1a,n2a,Ka,vec1a,P1a,P2a)

# Error en P1a[i, ] : número incorreto de dimensiones


#...................

Y saludos

mm~

_______________________________

        J. Miguel Marin

http://www.est.uc3m.es/jmmarin

    Dep. de Estadistica
Universidad Carlos III de Madrid



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