2012-03-29 11 views

Respuesta

21

primer lugar usted necesita para obtener la fila y la columna de ese índice usando arrayInd.

k <- arrayInd(4, dim(mdat)) 

entonces se puede obtener el nombre correcto por conseguir ese elemento de la fila y columna nombres

rownames(mdat)[k[,1]] 
colnames(mdat)[k[,2]] 

o ambas cosas a la vez utilizando mapply:

mapply(`[[`, dimnames(mdat), k) 
+4

Al leer esta respuesta de nuevo, Me pregunto si el OP solo tenía el índice general porque ejecutaban 'which' sin' arr.ind = TRUE'. Lectores futuros: si obtiene ese índice de 'which', use' arr.ind = TRUE' para obtener los índices de fila y columna, en lugar de usar 'arrayInd'. – Aaron

6

Subconfiguración los primeros resultados de la matriz en un vector de un elemento que no tiene nombres, como se muestra en su pregunta. Recuerde que el subconjunto crea un objeto completamente nuevo mediante la copia. No hay forma de hacer referencia al mdat original después del subconjunto.

Esto es más claro si asigna el resultado del subconjunto a otro objeto.

> m <- mdat[4] 
> m 
[1] 12 
> names(m) # no names were printed above... so 
NULL 

que realmente quiere acceder a los nombres de columnas/filas primera y subconjuntos ellos.

> colnames(mdat)[3] 
[1] "C.3" 
> rownames(mdat)[2] 
[1] "row2" 

Puede reasignar nombres de columnas/filas de manera similar.

> colnames(mdat)[3] <- "C3" 
> rownames(mdat)[2] <- "row.2" 
> mdat 
     C.1 C.2 C3 
row1 1 2 3 
row.2 11 12 13 
Cuestiones relacionadas