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