Sergio Ivan Roman Ponce
2011-Jun-08 22:28 UTC
[R-es] Merge con matrices diferentes dimensiones
Hola a todos, Soy relativamente nuevo usando R. Actualmente estoy haciendo mis primeros intentos con R. Necesito un poco de ayuda en algo que podría parecer muy sencillo, pero para mí me está costando mucho trabajo. Primera pregunta: Tengo una matriz ye necesito poner el número de Columba y de fila como nombre de la variable sin ninguna letra? Solo del 1 al n. Segunda pregunta: Tengo dos matrices cuadradas: La primera con dimensión 4 X 4 Matriz A: A11 1 0 0 0 A12 0 1 0 0 A21 0 0 1 0 A22 0 0 0 1 La primera con dimensión 2 X 2 Matriz B: 1 0 0 1 Necesito extraer los valores de la Matriz A de los elementos de B. El problema es que B no es un bloque de A, (ningún bloque como A11, A12, A21 o A22). Las filas y columnas no son continuas unas con otras, están entre mezcladas. Los nombres de las filas y columnas de la MATRIZ B son números que deben corresponden al número de columna de la MATRIX A. SUGERENCIAS?>Sergio [[alternative HTML version deleted]]
Hola, Para la primera parte, mira el detalle del help de R sobre: rownames colnames Y sobre la segunda pregunta creo que falta que lo expliques un poco mejor. En el mientras tanto mira si subset.matrix te puede ayudar. Saludos, Carlos Ortega www.qualityexcellence.es 2011/6/9 Sergio Ivan Roman Ponce <romanponce@hotmail.com>> Hola a todos, > > > > Soy relativamente nuevo usando R. > > > > Actualmente estoy haciendo mis primeros intentos con R. > > > > Necesito un poco de ayuda en algo que podría parecer muy sencillo, pero > para > mí me está costando mucho trabajo. > > Primera pregunta: > > > > Tengo una matriz ye necesito poner el número de Columba y de fila como > nombre de la variable sin ninguna letra? > > Solo del 1 al n. > > > > > > Segunda pregunta: > > Tengo dos matrices cuadradas: > > La primera con dimensión 4 X 4 > > Matriz A: > > A11 1 0 0 0 A12 > > 0 1 0 0 > > A21 0 0 1 0 A22 > > 0 0 0 1 > > > > La primera con dimensión 2 X 2 > > Matriz B: > > 1 0 > > 0 1 > > > > Necesito extraer los valores de la Matriz A de los elementos de B. > > > > El problema es que B no es un bloque de A, (ningún bloque como A11, A12, > A21 > o A22). Las filas y columnas no son continuas unas con otras, están entre > mezcladas. > > > > Los nombres de las filas y columnas de la MATRIZ B son números que deben > corresponden al número de columna de la MATRIX A. > > > > SUGERENCIAS? > > > > > > > Sergio > > > > > [[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]]
Sergio Ivan Roman Ponce
2011-Jun-09 13:43 UTC
[R-es] Merge con matrices diferentes dimensiones
Estimado Carlos, En la primera pregunta: Agregue los nombres de las columnas y filas de la siguiente manera: rownames(Ag) <- paste(1:4998) colnames(Ag) <- paste(1:4998) Tengo dos matrices: Ag es una matrix (4998X4998). Los nombres de las columnas y filas son el numero de cada una de ellas [1:4998] ID es una matrix (1089X1089). Los nombres de las columnas y filas son numero comprendidos entre [1858:4998]. Como es evidente el rango de valores es 3140, pero ID solo tiene 1089 observaciones. El numero de la primera columna de ID es 1858 y la informacion corresponde a la columnna 1858 de la matriz Ag. Y asi sucesivamente, hasta llegar a la ultima columna/fila de ID con nombre 4998 con la columna 4998 de Ag. Mi ultima prueba la realice con merge. TEST<- merge(ID, Ag, by = "row.names", all.x=FALSE) Saludos y gracias de antemano..>Sergio Ivan Roman Ponce From: Carlos Ortega [mailto:coforfe@gmail.com] Sent: jueves, 09 de junio de 2011 12:21 p.m. To: Sergio Ivan Roman Ponce Cc: r-help-es@r-project.org Subject: Re: [R-es] Merge con matrices diferentes dimensiones Hola, Para la primera parte, mira el detalle del help de R sobre: rownames colnames Y sobre la segunda pregunta creo que falta que lo expliques un poco mejor. En el mientras tanto mira si subset.matrix te puede ayudar. Saludos, Carlos Ortega www.qualityexcellence.es 2011/6/9 Sergio Ivan Roman Ponce <romanponce@hotmail.com> Hola a todos, Soy relativamente nuevo usando R. Actualmente estoy haciendo mis primeros intentos con R. Necesito un poco de ayuda en algo que podría parecer muy sencillo, pero para mí me está costando mucho trabajo. Primera pregunta: Tengo una matriz ye necesito poner el número de Columba y de fila como nombre de la variable sin ninguna letra? Solo del 1 al n. Segunda pregunta: Tengo dos matrices cuadradas: La primera con dimensión 4 X 4 Matriz A: A11 1 0 0 0 A12 0 1 0 0 A21 0 0 1 0 A22 0 0 0 1 La primera con dimensión 2 X 2 Matriz B: 1 0 0 1 Necesito extraer los valores de la Matriz A de los elementos de B. El problema es que B no es un bloque de A, (ningún bloque como A11, A12, A21 o A22). Las filas y columnas no son continuas unas con otras, están entre mezcladas. Los nombres de las filas y columnas de la MATRIZ B son números que deben corresponden al número de columna de la MATRIX A. SUGERENCIAS?>Sergio [[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 Sergio, Mira si este ejemplo reproduce lo que estás buscando. m2 <- cbind(1,1:20) colnames(m2, do.NULL = FALSE) colnames(m2) <- c("x","Y") rownames(m2) <- rownames(m2, do.NULL = FALSE) m2> m2 x Yrow1 1 1 row2 1 2 row3 1 3 row4 1 4 row5 1 5 row6 1 6 row7 1 7 row8 1 8 row9 1 9 row10 1 10 row11 1 11 row12 1 12 row13 1 13 row14 1 14 row15 1 15 row16 1 16 row17 1 17 row18 1 18 row19 1 19 row20 1 20 m3<-cbind(1,1:5) colnames(m3, do.NULL = FALSE) colnames(m3) <- c("x","Y") rownames(m3) <- c(paste("row",16:20, sep="")) m3> m3 x Yrow16 1 1 row17 1 2 row18 1 3 row19 1 4 row20 1 5> m2[rownames(m2)==rownames(m3),] x Yrow16 1 16 row17 1 17 row18 1 18 row19 1 19 row20 1 20 Saludos, Carlos Ortega www.qualityexcellence.es 2011/6/9 Sergio Ivan Roman Ponce <romanponce@hotmail.com>> Estimado Carlos, > > > > En la primera pregunta: > > Agregue los nombres de las columnas y filas de la siguiente manera: > > > > rownames(Ag) <- paste(1:4998) > > colnames(Ag) <- paste(1:4998) > > > > Tengo dos matrices: > > Ag es una matrix (4998X4998). Los nombres de las columnas y filas son el > numero de cada una de ellas [1:4998] > > ID es una matrix (1089X1089). Los nombres de las columnas y filas son > numero comprendidos entre [1858:4998]. > > > > Como es evidente el rango de valores es 3140, pero ID solo tiene 1089 > observaciones. > > > > El numero de la primera columna de ID es 1858 y la informacion corresponde > a la columnna 1858 de la matriz Ag. Y asi sucesivamente, hasta llegar a la > ultima columna/fila de ID con nombre 4998 con la columna 4998 de Ag. > > > > Mi ultima prueba la realice con merge. > > > > TEST<- merge(ID, Ag, by = "row.names", all.x=FALSE) > > > > Saludos y gracias de antemano.. > > * * > > * * > > *> * > > *Sergio Ivan Roman Ponce* > > *From:* Carlos Ortega [mailto:coforfe@gmail.com] > *Sent:* jueves, 09 de junio de 2011 12:21 p.m. > *To:* Sergio Ivan Roman Ponce > *Cc:* r-help-es@r-project.org > *Subject:* Re: [R-es] Merge con matrices diferentes dimensiones > > > > Hola, > > > > Para la primera parte, mira el detalle del help de R sobre: > > > > rownames > > colnames > > > > Y sobre la segunda pregunta creo que falta que lo expliques un poco mejor. > > En el mientras tanto mira si subset.matrix te puede ayudar. > > > > > > Saludos, > > Carlos Ortega > > www.qualityexcellence.es > > > > > > > > 2011/6/9 Sergio Ivan Roman Ponce <romanponce@hotmail.com> > > Hola a todos, > > > > Soy relativamente nuevo usando R. > > > > Actualmente estoy haciendo mis primeros intentos con R. > > > > Necesito un poco de ayuda en algo que podría parecer muy sencillo, pero > para > mí me está costando mucho trabajo. > > Primera pregunta: > > > > Tengo una matriz ye necesito poner el número de Columba y de fila como > nombre de la variable sin ninguna letra? > > Solo del 1 al n. > > > > > > Segunda pregunta: > > Tengo dos matrices cuadradas: > > La primera con dimensión 4 X 4 > > Matriz A: > > A11 1 0 0 0 A12 > > 0 1 0 0 > > A21 0 0 1 0 A22 > > 0 0 0 1 > > > > La primera con dimensión 2 X 2 > > Matriz B: > > 1 0 > > 0 1 > > > > Necesito extraer los valores de la Matriz A de los elementos de B. > > > > El problema es que B no es un bloque de A, (ningún bloque como A11, A12, > A21 > o A22). Las filas y columnas no son continuas unas con otras, están entre > mezcladas. > > > > Los nombres de las filas y columnas de la MATRIZ B son números que deben > corresponden al número de columna de la MATRIX A. > > > > SUGERENCIAS? > > > > > > > Sergio > > > > > [[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]]
Buenos dias Carlos, Creo que en este caso, es mejor utilizar %in% en vez de ==. Observa lo siguiente: *> m2n <- m2[sample(nrow(m2)),] > m2nx Y row9 1 9 row2 1 2 row11 1 11 row7 1 7 row19 1 19 row15 1 15 row12 1 12 row4 1 4 row3 1 3 row17 1 17 row1 1 1 row5 1 5 row18 1 18 row16 1 16 row10 1 10 row14 1 14 row6 1 6 row8 1 8 row13 1 13 row20 1 20> m2n[rownames(m2n) == rownames(m3),]x Y row18 1 18 row20 1 20> m2n[rownames(m2n) %in% rownames(m3),]x Y row19 1 19 row17 1 17 row18 1 18 row16 1 16 row20 1 20 En el ejemplo que envias (por cierto, muchas gracias!), las cosas funcionan bien porque los nombres de las filas en ambas matrices estan ordenadas. Un saludo, Jorge * 2011/6/9 Carlos Ortega <>> Hola Sergio, > > Mira si este ejemplo reproduce lo que estás buscando. > > m2 <- cbind(1,1:20) > colnames(m2, do.NULL = FALSE) > colnames(m2) <- c("x","Y") > rownames(m2) <- rownames(m2, do.NULL = FALSE) > m2 > > > m2 x Y > row1 1 1 > row2 1 2 > row3 1 3 > row4 1 4 > row5 1 5 > row6 1 6 > row7 1 7 > row8 1 8 > row9 1 9 > row10 1 10 > row11 1 11 > row12 1 12 > row13 1 13 > row14 1 14 > row15 1 15 > row16 1 16 > row17 1 17 > row18 1 18 > row19 1 19 > row20 1 20 > > > > m3<-cbind(1,1:5) > colnames(m3, do.NULL = FALSE) > colnames(m3) <- c("x","Y") > rownames(m3) <- c(paste("row",16:20, sep="")) > m3 > > > m3 x Y > row16 1 1 > row17 1 2 > row18 1 3 > row19 1 4 > row20 1 5 > > > > > m2[rownames(m2)==rownames(m3),] x Y > row16 1 16 > row17 1 17 > row18 1 18 > row19 1 19 > row20 1 20 > > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > > 2011/6/9 Sergio Ivan Roman Ponce <> > > > Estimado Carlos, > > > > > > > > En la primera pregunta: > > > > Agregue los nombres de las columnas y filas de la siguiente manera: > > > > > > > > rownames(Ag) <- paste(1:4998) > > > > colnames(Ag) <- paste(1:4998) > > > > > > > > Tengo dos matrices: > > > > Ag es una matrix (4998X4998). Los nombres de las columnas y filas son el > > numero de cada una de ellas [1:4998] > > > > ID es una matrix (1089X1089). Los nombres de las columnas y filas son > > numero comprendidos entre [1858:4998]. > > > > > > > > Como es evidente el rango de valores es 3140, pero ID solo tiene 1089 > > observaciones. > > > > > > > > El numero de la primera columna de ID es 1858 y la informacion > corresponde > > a la columnna 1858 de la matriz Ag. Y asi sucesivamente, hasta llegar a > la > > ultima columna/fila de ID con nombre 4998 con la columna 4998 de Ag. > > > > > > > > Mi ultima prueba la realice con merge. > > > > > > > > TEST<- merge(ID, Ag, by = "row.names", all.x=FALSE) > > > > > > > > Saludos y gracias de antemano.. > > > > * * > > > > * * > > > > *> * > > > > *Sergio Ivan Roman Ponce* > > > > *From:* Carlos Ortega [mailto: > > *Sent:* jueves, 09 de junio de 2011 12:21 p.m. > > *To:* Sergio Ivan Roman Ponce > > *Cc:* r-help-es@r-project.org > > *Subject:* Re: [R-es] Merge con matrices diferentes dimensiones > > > > > > > > Hola, > > > > > > > > Para la primera parte, mira el detalle del help de R sobre: > > > > > > > > rownames > > > > colnames > > > > > > > > Y sobre la segunda pregunta creo que falta que lo expliques un poco > mejor. > > > > En el mientras tanto mira si subset.matrix te puede ayudar. > > > > > > > > > > > > Saludos, > > > > Carlos Ortega > > > > www.qualityexcellence.es > > > > > > > > > > > > > > > > 2011/6/9 Sergio Ivan Roman Ponce <> > > > > Hola a todos, > > > > > > > > Soy relativamente nuevo usando R. > > > > > > > > Actualmente estoy haciendo mis primeros intentos con R. > > > > > > > > Necesito un poco de ayuda en algo que podría parecer muy sencillo, pero > > para > > mí me está costando mucho trabajo. > > > > Primera pregunta: > > > > > > > > Tengo una matriz ye necesito poner el número de Columba y de fila como > > nombre de la variable sin ninguna letra? > > > > Solo del 1 al n. > > > > > > > > > > > > Segunda pregunta: > > > > Tengo dos matrices cuadradas: > > > > La primera con dimensión 4 X 4 > > > > Matriz A: > > > > A11 1 0 0 0 A12 > > > > 0 1 0 0 > > > > A21 0 0 1 0 A22 > > > > 0 0 0 1 > > > > > > > > La primera con dimensión 2 X 2 > > > > Matriz B: > > > > 1 0 > > > > 0 1 > > > > > > > > Necesito extraer los valores de la Matriz A de los elementos de B. > > > > > > > > El problema es que B no es un bloque de A, (ningún bloque como A11, A12, > > A21 > > o A22). Las filas y columnas no son continuas unas con otras, están entre > > mezcladas. > > > > > > > > Los nombres de las filas y columnas de la MATRIZ B son números que deben > > corresponden al número de columna de la MATRIX A. > > > > > > > > SUGERENCIAS? > > > > > > > > > > > > > Sergio > > > > > > > > > > [[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]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Sergio Ivan Roman Ponce
2011-Jun-09 14:53 UTC
[R-es] Merge con matrices diferentes dimensiones
Jorge y Carlos Muchas gracias por la ayuda. Creo que la mitad del camino esta andado. Con “==” me resulta el siguiente mensaje:> TEST<- As[rownames(As)==rownames(ID),]Mensajes de aviso perdidos In rownames(As) == rownames(ID) : longitud de objeto mayor no es múltiplo de la longitud de uno menor> dim(TEST)[1] 4 4998 En cambio usando este código:> TEST<- As[rownames(As)%in%rownames(ID),]> dim(TEST)[1] 1089 4998> TEST<- As[colnames(As)%in%colnames(ID),]> dim(TEST)[1] 0 4998 TEST<- As[colnames(As)%in%rownames(ID),]> dim(TEST)[1] 1089 4998 El primer y el tercer código logra eliminar las filas. Me falta todavía eliminar las columnas. Alguna idea o sugerencia???>Sergio From: Jorge Ivan Velez [mailto:jorgeivanvelez@gmail.com] Sent: jueves, 09 de junio de 2011 04:15 p.m. To: Carlos Ortega Cc: Sergio Ivan Roman Ponce; r-help-es@r-project.org Subject: Re: [R-es] Merge con matrices diferentes dimensiones Buenos dias Carlos, Creo que en este caso, es mejor utilizar %in% en vez de ==. Observa lo siguiente:> m2n <- m2[sample(nrow(m2)),]> m2nx Y row9 1 9 row2 1 2 row11 1 11 row7 1 7 row19 1 19 row15 1 15 row12 1 12 row4 1 4 row3 1 3 row17 1 17 row1 1 1 row5 1 5 row18 1 18 row16 1 16 row10 1 10 row14 1 14 row6 1 6 row8 1 8 row13 1 13 row20 1 20> m2n[rownames(m2n) == rownames(m3),]x Y row18 1 18 row20 1 20> m2n[rownames(m2n) %in% rownames(m3),]x Y row19 1 19 row17 1 17 row18 1 18 row16 1 16 row20 1 20 En el ejemplo que envias (por cierto, muchas gracias!), las cosas funcionan bien porque los nombres de las filas en ambas matrices estan ordenadas. Un saludo, Jorge 2011/6/9 Carlos Ortega <> Hola Sergio, Mira si este ejemplo reproduce lo que estás buscando. m2 <- cbind(1,1:20) colnames(m2, do.NULL = FALSE) colnames(m2) <- c("x","Y") rownames(m2) <- rownames(m2, do.NULL = FALSE) m2> m2 x Yrow1 1 1 row2 1 2 row3 1 3 row4 1 4 row5 1 5 row6 1 6 row7 1 7 row8 1 8 row9 1 9 row10 1 10 row11 1 11 row12 1 12 row13 1 13 row14 1 14 row15 1 15 row16 1 16 row17 1 17 row18 1 18 row19 1 19 row20 1 20 m3<-cbind(1,1:5) colnames(m3, do.NULL = FALSE) colnames(m3) <- c("x","Y") rownames(m3) <- c(paste("row",16:20, sep="")) m3> m3 x Yrow16 1 1 row17 1 2 row18 1 3 row19 1 4 row20 1 5> m2[rownames(m2)==rownames(m3),] x Yrow16 1 16 row17 1 17 row18 1 18 row19 1 19 row20 1 20 Saludos, Carlos Ortega www.qualityexcellence.es 2011/6/9 Sergio Ivan Roman Ponce <>> Estimado Carlos, > > > > En la primera pregunta: > > Agregue los nombres de las columnas y filas de la siguiente manera: > > > > rownames(Ag) <- paste(1:4998) > > colnames(Ag) <- paste(1:4998) > > > > Tengo dos matrices: > > Ag es una matrix (4998X4998). Los nombres de las columnas y filas son el > numero de cada una de ellas [1:4998] > > ID es una matrix (1089X1089). Los nombres de las columnas y filas son > numero comprendidos entre [1858:4998]. > > > > Como es evidente el rango de valores es 3140, pero ID solo tiene 1089 > observaciones. > > > > El numero de la primera columna de ID es 1858 y la informacion corresponde > a la columnna 1858 de la matriz Ag. Y asi sucesivamente, hasta llegar a la > ultima columna/fila de ID con nombre 4998 con la columna 4998 de Ag. > > > > Mi ultima prueba la realice con merge. > > > > TEST<- merge(ID, Ag, by = "row.names", all.x=FALSE) > > > > Saludos y gracias de antemano.. > > * * > > * * > > *> * > > *Sergio Ivan Roman Ponce* > > *From:* Carlos Ortega [mailto: > *Sent:* jueves, 09 de junio de 2011 12:21 p.m. > *To:* Sergio Ivan Roman Ponce > *Cc:* r-help-es@r-project.org > *Subject:* Re: [R-es] Merge con matrices diferentes dimensiones > > > > Hola, > > > > Para la primera parte, mira el detalle del help de R sobre: > > > > rownames > > colnames > > > > Y sobre la segunda pregunta creo que falta que lo expliques un poco mejor. > > En el mientras tanto mira si subset.matrix te puede ayudar. > > > > > > Saludos, > > Carlos Ortega > > www.qualityexcellence.es > > > > > > > > 2011/6/9 Sergio Ivan Roman Ponce <> > > Hola a todos, > > > > Soy relativamente nuevo usando R. > > > > Actualmente estoy haciendo mis primeros intentos con R. > > > > Necesito un poco de ayuda en algo que podría parecer muy sencillo, pero > para > mí me está costando mucho trabajo. > > Primera pregunta: > > > > Tengo una matriz ye necesito poner el número de Columba y de fila como > nombre de la variable sin ninguna letra? > > Solo del 1 al n. > > > > > > Segunda pregunta: > > Tengo dos matrices cuadradas: > > La primera con dimensión 4 X 4 > > Matriz A: > > A11 1 0 0 0 A12 > > 0 1 0 0 > > A21 0 0 1 0 A22 > > 0 0 0 1 > > > > La primera con dimensión 2 X 2 > > Matriz B: > > 1 0 > > 0 1 > > > > Necesito extraer los valores de la Matriz A de los elementos de B. > > > > El problema es que B no es un bloque de A, (ningún bloque como A11, A12, > A21 > o A22). Las filas y columnas no son continuas unas con otras, están entre > mezcladas. > > > > Los nombres de las filas y columnas de la MATRIZ B son números que deben > corresponden al número de columna de la MATRIX A. > > > > SUGERENCIAS? > > > > > > > Sergio > > > > > [[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]] _______________________________________________ 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 Sergio, Intenta lo siguiente: set.seed(123) m2 <- matrix(rnorm(200), ncol = 10) colnames(m2) <- paste(''x'', 1:ncol(m2), sep = "") rownames(m2) <- paste(''id_'', sample(nrow(m2)), sep = "") m2 m3 <- matrix(rnorm(30), ncol = 3) colnames(m3) <- paste(''x'', sample(nrow(m2), 3), sep = "") rownames(m3) <- paste(''id_'', sample(nrow(m3)), sep = "") m3 filas <- rownames(m2) %in% rownames(m3) columnas <- colnames(m2) %in% colnames(m3) m2[filas, columnas] Espero sea de utilidad, Jorge 2011/6/9 Sergio Ivan Roman Ponce <romanponce@hotmail.com>> Jorge y Carlos > > > > Muchas gracias por la ayuda. > > > > Creo que la mitad del camino esta andado. > > > > Con “==” me resulta el siguiente mensaje: > > > TEST<- As[rownames(As)==rownames(ID),] > > Mensajes de aviso perdidos > > In rownames(As) == rownames(ID) : > > longitud de objeto mayor no es múltiplo de la longitud de uno menor > > > dim(TEST) > > [1] 4 4998 > > > > En cambio usando este código: > > > TEST<- As[rownames(As)%in%rownames(ID),] > > > dim(TEST) > > [1] 1089 4998 > > > > > TEST<- As[colnames(As)%in%colnames(ID),] > > > dim(TEST) > > [1] 0 4998 > > > > TEST<- As[colnames(As)%in%rownames(ID),] > > > dim(TEST) > > [1] 1089 4998 > > > > El primer y el tercer código logra eliminar las filas. Me falta todavía > eliminar las columnas. > > > > Alguna idea o sugerencia??? > > > > > > > > *> * > > *Sergio * > > > > *From:* Jorge Ivan Velez [mailto:jorgeivanvelez@gmail.com] > *Sent:* jueves, 09 de junio de 2011 04:15 p.m. > *To:* Carlos Ortega > *Cc:* Sergio Ivan Roman Ponce; r-help-es@r-project.org > > *Subject:* Re: [R-es] Merge con matrices diferentes dimensiones > > > > Buenos dias Carlos, > > > > Creo que en este caso, es mejor utilizar %in% en vez de ==. Observa lo > siguiente: > > > > > m2n <- m2[sample(nrow(m2)),] > > > m2n > > x Y > > row9 1 9 > > row2 1 2 > > row11 1 11 > > row7 1 7 > > row19 1 19 > > row15 1 15 > > row12 1 12 > > row4 1 4 > > row3 1 3 > > row17 1 17 > > row1 1 1 > > row5 1 5 > > row18 1 18 > > row16 1 16 > > row10 1 10 > > row14 1 14 > > row6 1 6 > > row8 1 8 > > row13 1 13 > > row20 1 20 > > > m2n[rownames(m2n) == rownames(m3),] > > x Y > > row18 1 18 > > row20 1 20 > > > m2n[rownames(m2n) %in% rownames(m3),] > > x Y > > row19 1 19 > > row17 1 17 > > row18 1 18 > > row16 1 16 > > row20 1 20 > > > > En el ejemplo que envias (por cierto, muchas gracias!), las cosas funcionan > bien porque los nombres de las filas en ambas matrices estan ordenadas. > > > > Un saludo, > > Jorge > > > > 2011/6/9 Carlos Ortega <> > > Hola Sergio, > > Mira si este ejemplo reproduce lo que estás buscando. > > m2 <- cbind(1,1:20) > colnames(m2, do.NULL = FALSE) > colnames(m2) <- c("x","Y") > rownames(m2) <- rownames(m2, do.NULL = FALSE) > m2 > > > m2 x Y > row1 1 1 > row2 1 2 > row3 1 3 > row4 1 4 > row5 1 5 > row6 1 6 > row7 1 7 > row8 1 8 > row9 1 9 > row10 1 10 > row11 1 11 > row12 1 12 > row13 1 13 > row14 1 14 > row15 1 15 > row16 1 16 > row17 1 17 > row18 1 18 > row19 1 19 > row20 1 20 > > > > m3<-cbind(1,1:5) > colnames(m3, do.NULL = FALSE) > colnames(m3) <- c("x","Y") > rownames(m3) <- c(paste("row",16:20, sep="")) > m3 > > > m3 x Y > row16 1 1 > row17 1 2 > row18 1 3 > row19 1 4 > row20 1 5 > > > > > m2[rownames(m2)==rownames(m3),] x Y > row16 1 16 > row17 1 17 > row18 1 18 > row19 1 19 > row20 1 20 > > > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > > 2011/6/9 Sergio Ivan Roman Ponce <> > > > Estimado Carlos, > > > > > > > > En la primera pregunta: > > > > Agregue los nombres de las columnas y filas de la siguiente manera: > > > > > > > > rownames(Ag) <- paste(1:4998) > > > > colnames(Ag) <- paste(1:4998) > > > > > > > > Tengo dos matrices: > > > > Ag es una matrix (4998X4998). Los nombres de las columnas y filas son el > > numero de cada una de ellas [1:4998] > > > > ID es una matrix (1089X1089). Los nombres de las columnas y filas son > > numero comprendidos entre [1858:4998]. > > > > > > > > Como es evidente el rango de valores es 3140, pero ID solo tiene 1089 > > observaciones. > > > > > > > > El numero de la primera columna de ID es 1858 y la informacion > corresponde > > a la columnna 1858 de la matriz Ag. Y asi sucesivamente, hasta llegar a > la > > ultima columna/fila de ID con nombre 4998 con la columna 4998 de Ag. > > > > > > > > Mi ultima prueba la realice con merge. > > > > > > > > TEST<- merge(ID, Ag, by = "row.names", all.x=FALSE) > > > > > > > > Saludos y gracias de antemano.. > > > > * * > > > > * * > > > > *> * > > > > *Sergio Ivan Roman Ponce* > > > > *From:* Carlos Ortega [mailto: > > *Sent:* jueves, 09 de junio de 2011 12:21 p.m. > > *To:* Sergio Ivan Roman Ponce > > *Cc:* r-help-es@r-project.org > > *Subject:* Re: [R-es] Merge con matrices diferentes dimensiones > > > > > > > > Hola, > > > > > > > > Para la primera parte, mira el detalle del help de R sobre: > > > > > > > > rownames > > > > colnames > > > > > > > > Y sobre la segunda pregunta creo que falta que lo expliques un poco > mejor. > > > > En el mientras tanto mira si subset.matrix te puede ayudar. > > > > > > > > > > > > Saludos, > > > > Carlos Ortega > > > > www.qualityexcellence.es > > > > > > > > > > > > > > > > 2011/6/9 Sergio Ivan Roman Ponce <> > > > > Hola a todos, > > > > > > > > Soy relativamente nuevo usando R. > > > > > > > > Actualmente estoy haciendo mis primeros intentos con R. > > > > > > > > Necesito un poco de ayuda en algo que podría parecer muy sencillo, pero > > para > > mí me está costando mucho trabajo. > > > > Primera pregunta: > > > > > > > > Tengo una matriz ye necesito poner el número de Columba y de fila como > > nombre de la variable sin ninguna letra? > > > > Solo del 1 al n. > > > > > > > > > > > > Segunda pregunta: > > > > Tengo dos matrices cuadradas: > > > > La primera con dimensión 4 X 4 > > > > Matriz A: > > > > A11 1 0 0 0 A12 > > > > 0 1 0 0 > > > > A21 0 0 1 0 A22 > > > > 0 0 0 1 > > > > > > > > La primera con dimensión 2 X 2 > > > > Matriz B: > > > > 1 0 > > > > 0 1 > > > > > > > > Necesito extraer los valores de la Matriz A de los elementos de B. > > > > > > > > El problema es que B no es un bloque de A, (ningún bloque como A11, A12, > > A21 > > o A22). Las filas y columnas no son continuas unas con otras, están entre > > mezcladas. > > > > > > > > Los nombres de las filas y columnas de la MATRIZ B son números que deben > > corresponden al número de columna de la MATRIX A. > > > > > > > > SUGERENCIAS? > > > > > > > > > > > > > Sergio > > > > > > > > > > [[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]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > > >[[alternative HTML version deleted]]