varias usar una transpuesta studio multiplicar matriz matrices graficas generacion funcion declarar como r matrix indexing

usar - `which()` función para índices matriciales



transpuesta de una matriz en r (2)

No puede mezclar numérico y alfa en una matriz, pero puede hacerlo en un data.frame:

> indices <- data.frame(ind= which(m == 1, arr.ind=TRUE)) > indices$rnm <- rownames(m)[indices$ind.row] > indices$cnm <- colnames(m)[indices$ind.col] > indices ind.row ind.col rnm cnm c 3 1 c e b 2 2 b f a 1 3 a g d 4 3 d g

Digamos que tengo alguna matriz, por ejemplo:

> m = matrix(rep(c(0, 0, 1), 4), nrow = 4) > m [,1] [,2] [,3] [1,] 0 0 1 [2,] 0 1 0 [3,] 1 0 0 [4,] 0 0 1

Si ejecuto which , obtengo una lista de índices normales:

> which(m == 1) [1] 3 6 9 12

Quiero obtener algo así como índices de matriz, cada índice que contiene el número de fila y columna:

[,1] [,2] [1,] 3 1 [2,] 2 2 [3,] 1 3 [4,] 4 3

¿Hay alguna función simple para hacer esto? Además, de alguna manera debería contener los nombres de fila y columna:

> rownames(m) = letters[1:4] > colnames(m) = letters[5:7] > m e f g a 0 0 1 b 0 1 0 c 1 0 0 d 0 0 1

pero ahora no sé cómo, tal vez como

[,1] [,2] [,3] [,4] [1,] 3 1 c e [2,] 2 2 b f [3,] 1 3 a g [4,] 4 3 d g

o, quizás devuelva 2 vectores (para filas y columnas), como

c b a d 3 2 1 4 e f g g 1 2 3 3


Para su primera pregunta también necesita pasar arr.ind=T a la which :

> which(m == 1, arr.ind=T) row col [1,] 3 1 [2,] 2 2 [3,] 1 3 [4,] 4 3