Hola,

De esta manera sí funciona:

#-----------------------------------------------

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

vec1a <- as.vector(1:3)

n1a <- 3

n2a <- 3

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

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

Ka <- 10
n.val <- 30

# En forma de funcion

producto <- function(n1a,n2a,Ka,vec1a,n.val){

# A eliminar una vez compruebes que la vectorización funciona
set.seed(123)

P1a <- matrix(rnorm(n.val),nrow=3)
P1a <- matrix(rnorm(n.val),nrow=3)

  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,n.val)


vproducto <- Vectorize(producto)
sum(vproducto(3,3,10,as.vector(1:3),30))

vproducto <- Vectorize(producto, c("n1a","n2a","Ka","vec1a","n.val"))
sum(vproducto(3,3,10,as.vector(1:3),30))


#-----------------------------------------------

Saludos,
Carlos Ortega
www.qualityexcellence.es



El 16 de diciembre de 2013, 17:38, J. Miguel Marin <jmmarin@est-econ.uc3m.es
> escribió:

>
> Hola a tod@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
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]

