Nombres de filas y columnas en R

Manipulación de datos con R Transformación de datos
Nombres de filas y columnas en R

Las funciones rownames y colnames permiten obtener y establecer nombres de filas y columnas para matrices o data frames. La función dimnames es similar, ya que permite obtener o establecer tanto los nombres de columna como de fila de un objeto.

Obtener o establecer nombres de fila con rownames

La función rownames permite recuperar los nombres de las filas de un data frame o matriz. La sintaxis de la función es la siguiente:

# Obtener nombres de fila
rownames(x)

# Establecer los nombres a "value" (por lo general, un vector o NULL)
rownames(x) <- value

En el siguiente bloque de código creamos un data frame de ejemplo con dos columnas y diez filas. El data frame tiene el siguiente aspecto:

df <- data.frame(col1 = 1:10, col2 = 11:20)
df
   col1 col2
1     1   11
2     2   12
3     3   13
4     4   14
5     5   15
6     6   16
7     7   17
8     8   18
9     9   19
10   10   20

Puedes comprobar los nombres de las filas por defecto con la función rownames. Como los nombres de fila aún no se han establecido, los nombres por defecto son el índice de cada fila.

rownames(df)
"1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

No obstante, la función rownames también puede utilizarse para establecer los nombres de las filas. Para ello, deberás asignar un vector con tantos elementos como filas.

rownames(df) <- paste("Fila", 1:10)
rownames(df)
"Fila 1"  "Fila 2"  "Fila 3"  "Fila 4"  "Fila 5"  "Fila 6"  "Fila 7"  "Fila 8"  "Fila 9"  "Fila 10"

Ahora, si compruebas el conjunto de datos de ejemplo verás que las filas tienen el nombre que estableciste con el código anterior.

df
       col1 col2
Fila 1     1   11
Fila 2     2   12
Fila 3     3   13
Fila 4     4   14
Fila 5     5   15
Fila 6     6   16
Fila 7     7   17
Fila 8     8   18
Fila 9     9   19
Fila 10   10   20

Obtener o establecer nombres de columna con colnames

La función colnames se comporta igual que rownames pero para nombres de columnas. La sintaxis es la siguiente:

# Obtener nombres de columna
colnames(x)

# Establecer los nombres de columna como "value" (por lo general un vector o NULL)
colnames(x) <- value

Si quieres comprobar los nombres de las columnas de tu objeto, sólo tienes que introducir el nombre de tu objeto en la función.

colnames(df)
"col1" "col2"

También puedes personalizar los nombres de las columnas de tu objeto asignándoles nuevos valores.

colnames(df) <- c("Columna 1", "Columna 2")
colnames(df)
"Columna 1" "Columna 2"

Ahora puedes comprobar que tu data frame tiene los nuevos nombres de columna:

df
        Columna 1 Columna 2
Fila 1          1        11
Fila 2          2        12
Fila 3          3        13
Fila 4          4        14
Fila 5          5        15
Fila 6          6        16
Fila 7          7        17
Fila 8          8        18
Fila 9          9        19
Fila 10        10        20

La función dimnames

La función dimnames puede utilizarse para recuperar los nombres de fila y columna de un objeto. La salida es una lista en la que el primer elemento son los nombres de las filas y el segundo los nombres de las columnas.

dimnames(df)
[[1]]
 [1] "Fila 1"  "Fila 2"  "Fila 3"  "Fila 4"  "Fila 5"  "Fila 6"  "Fila 7"  "Fila 8"  "Fila 9"  "Fila 10"

[[2]]
[1] "Columna 1" "Columna 2"

Puedes acceder a cada uno de ellos accediendo a cada elemento de la lista como en el ejemplo siguiente.

# Nombres de fila
dimnames(df)[[1]]

# Nombres de columna
dimnames(df)[[2]]
"Fila 1"  "Fila 2"  "Fila 3"  "Fila 4"  "Fila 5"  "Fila 6"  "Fila 7"  "Fila 8"  "Fila 9"  "Fila 10"

"Columna 1" "Columna 2"

Si quieres cambiar los nombres de fila y columna puedes asignar un nuevo valor con dimnames(x)[[1]] <- value o dimnames(x)[[2]] <- value, pero se recomienda utilizar las funciones rownames y colnames en su lugar.

Eliminar nombres de filas y columnas

En ocasiones queremos eliminar los nombres de las columnas y/o filas de una matriz o data frame. Para ello tendrás que asignar las columnas y/o filas a NULL.

# Eliminar nombres de fila
rownames(df) <- NULL

# Eliminar nombres de columna
colnames(df) <- NULL

# Comprobamos el data frame
df

Ahora el data frame no tiene nombres de fila ni de columna.

1   1 11
2   2 12
3   3 13
4   4 14
5   5 15
6   6 16
7   7 17
8   8 18
9   9 19
10 10 20