Cómo hacer malabares con las dimensiones y reemplazar los valores en una matriz en la r

De forma predeterminada, R siempre trata de simplificar los objetos al menor número de dimensiones posibles al utilizar los soportes para extraer los valores de una matriz. Por lo tanto, si usted pide una sola columna o fila, R hará que un vector al dejar caer una dimensión.

Al igual que con los vectores, se pueden combinar varios números de los índices. Si desea colocar la primera y tercera filas de la matriz, puede hacerlo de esta manera:

> First.matrix [-c (1, 3),] [1] 2 5 8 11

Espera un minuto. . . . Sólo hay un índice. R no devuelve una matriz aquí - devuelve un vector!

Puede forzar R para mantener todas las dimensiones mediante el argumento extra soltar de la función de indexación. Para obtener la segunda fila devuelve como una matriz, haga lo siguiente:

> First.matrix [2,, drop = FALSO] [1] [2] [3] [4] [1], 2 5 8 11

Esto parece absoluta magia, pero no es tan difícil. Tiene tres posiciones ahora entre los soportes, todos separados por comas. La primera posición es el índice de la fila. La segunda posición es el índice de columna. ¿Pero entonces, qué?

En realidad, los corchetes funcionan como una función, y el índice de fila y columna de índice son argumentos a favor de los corchetes. Ahora se agrega un argumento extra soltar con el valor FALSO. Como lo hace con cualquier otra función, a separar los argumentos con comas. Ponga todo esto junto, y usted tiene el código mostrado aquí.

Sustitución de los valores en una matriz se hace de una manera muy similar a la sustitución de los valores en un vector. Para reemplazar el valor de la segunda fila y la tercera columna de first.matrix con 4, se utiliza el siguiente código.

> First.matrix [3, 2] lt; - 4> first.matrix [, 1] [, 2] [, 3] [, 4] [1,] 1 4 7 10 [2], 2 5 8 11 [3], 3 4 9 12

También puede cambiar toda una fila o columna de los valores al no especificar la otra dimensión. Nota que los valores son reciclados, por lo que para cambiar la segunda fila a la secuencia 1, 3, 1, 3, usted puede hacer simplemente lo siguiente:

> First.matrix [2], lt; - c (1,3)> first.matrix [, 1] [, 2] [, 3] [, 4] [1,] 1 4 7 10 [2], 1 3 1 3 [3,] 3 4 9 12

También puede sustituir un subconjunto de valores dentro de la matriz por otra matriz. Usted incluso no tiene que especificar los valores como una matriz - un vector hará. Echa un vistazo al resultado del siguiente código:

> First.matrix [1: 2, 3: 4] lt; - c (8,4,2,1)> first.matrix [1] [2] [3] [4] [1], 1 4 8 2 [2,] 1 3 4 1 [ 3,] 3 4 9 12

Aquí cambia los valores en las dos primeras filas y las dos últimas columnas a los números 8, 4, 2, y 1.

R lee y escribe matrices columna-sabia por defecto. Por lo tanto, si usted pone un vector en una matriz o un subconjunto de una matriz, que se pondrá en la columna sabia independientemente del método. Si usted quiere hacer esta fila-sabio, primero hay que construir una matriz con los valores utilizando el argumento byrow = TRUE. Luego utiliza esta matriz en lugar del vector original para insertar los valores.




» » » » Cómo hacer malabares con las dimensiones y reemplazar los valores en una matriz en la r