Estimados su ayuda con la ejecución del comando lapply() Tengo creada la siguiente función invertir(matriz,n) que me permite cambiar la posición de los elementos de una matriz. invertir<-function(Matriz,n){ a<-Matriz b<-matrix(c(rep(0,n*n)),n,n) c<-matrix(c(rep(0,n*n)),n,n) for (i in 1:n) {b[i,]<-a[(n+1)-i,]} for (j in 1:n) {c[,j]<-b[,(n+1)-j]} return(c) } matriz<-matrix(c(0,0,0,0,3,0,0,0,7,5,0,0,8,14,4,0),4,4, byrow=TRUE) invertir(matriz,4) Lo que necesito es aplicar la función lapply en conjunto con la funcion creada "invertir" a una lista en donde tengo almacenadas 19 matrices. Quiero sustituir este codigo que me realiza la misma tarea por la función lapply() (lo he intentado y me genera problemas de dimensión) kjl<-list() for(k in 1:19){ kjl[[k]]<-invertir(triu_inf[[k]],32)} su ayuda ya que tengo la noción de lo que realiza la función lapply pero no la entiendo a detalle que hace con c/u de los elementos Muchas gracias Alejo [[alternative HTML version deleted]]
Estimado Alejandro Sin responder su pregunta en forma directa, le pregunto, ¿matrix?, le es útil esa librería. http://cran.r-project.org/web/packages/Matrix/index.html Javier Marcuzzi El 15/11/13 17:32, Alejandro Ayala escribió:> Estimados su ayuda con la ejecución del comando lapply() > > Tengo creada la siguiente función invertir(matriz,n) que me permite cambiar > la posición de los elementos de una matriz. > > invertir<-function(Matriz,n){ > a<-Matriz > b<-matrix(c(rep(0,n*n)),n,n) > c<-matrix(c(rep(0,n*n)),n,n) > for (i in 1:n) {b[i,]<-a[(n+1)-i,]} > for (j in 1:n) {c[,j]<-b[,(n+1)-j]} > return(c) > } > > matriz<-matrix(c(0,0,0,0,3,0,0,0,7,5,0,0,8,14,4,0),4,4, byrow=TRUE) > invertir(matriz,4) > > Lo que necesito es aplicar la función lapply en conjunto con la funcion > creada "invertir" a una lista en donde tengo almacenadas 19 matrices. > > Quiero sustituir este codigo que me realiza la misma tarea por la función > lapply() (lo he intentado y me genera problemas de dimensión) > > kjl<-list() > for(k in 1:19){ > kjl[[k]]<-invertir(triu_inf[[k]],32)} > > su ayuda ya que tengo la noción de lo que realiza la función lapply pero no > la entiendo a detalle que hace con c/u de los elementos > > Muchas gracias > Alejo > > [[alternative HTML version deleted]] > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]
Hola: El 15/11/13 21:32, Alejandro Ayala escribió:> Estimados su ayuda con la ejecución del comando lapply() > > Tengo creada la siguiente función invertir(matriz,n) que me permite cambiar > la posición de los elementos de una matriz. > > invertir<-function(Matriz,n){ > a<-Matriz > b<-matrix(c(rep(0,n*n)),n,n) > c<-matrix(c(rep(0,n*n)),n,n) > for (i in 1:n) {b[i,]<-a[(n+1)-i,]} > for (j in 1:n) {c[,j]<-b[,(n+1)-j]} > return(c) > }Del código entiendo que trabajas con matrices cuadradas, ¿por qué no sacas directamente la dimensión en vez de pasársela? n<-dim(Matriz)[1]> > matriz<-matrix(c(0,0,0,0,3,0,0,0,7,5,0,0,8,14,4,0),4,4, byrow=TRUE) > invertir(matriz,4) > > Lo que necesito es aplicar la función lapply en conjunto con la funcion > creada "invertir" a una lista en donde tengo almacenadas 19 matrices.Si no lo he entendido mal, tienes una lista con un número determinado de matrices y les quieres aplicar la función invertir(), ¿no? lista<-list(matriz,matriz,matriz) lapply(lista,function(x) invertir(x,4)) No te creas que domino perfectamente a apply y sus derivados, pero creo que con eso se soluciona. Salud y Revolución. Lobo. -- Libertad es poder elegir en cualquier momento. Ahora yo elijo GNU/Linux, para no atar mis manos con las cadenas del soft propietario. Porque la libertad no es tu derecho, es tu responsabilidad. http://www.mucharuina.com --------- Desde El Ejido, en Almería, usuario registrado Linux #294013 http://www.counter.li.org