2010-02-19 15 views
5

Digamos que he creado la siguiente matriz:Cambio dimnames de matrices y tramas de datos en I

> x <- matrix(1:20000,nrow=100) 
> x[1:10,1:10] 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 1 101 201 301 401 501 601 701 801 901 
[2,] 2 102 202 302 402 502 602 702 802 902 
[3,] 3 103 203 303 403 503 603 703 803 903 
[4,] 4 104 204 304 404 504 604 704 804 904 
[5,] 5 105 205 305 405 505 605 705 805 905 
[6,] 6 106 206 306 406 506 606 706 806 906 
[7,] 7 107 207 307 407 507 607 707 807 907 
[8,] 8 108 208 308 408 508 608 708 808 908 
[9,] 9 109 209 309 409 509 609 709 809 909 
[10,] 10 110 210 310 410 510 610 710 810 910 

¿Cuáles son los métodos en R para cambiar los nombres de filas y columnas? Por ejemplo, me gustan los nombres de filas para ser SS1, SS2, ..., SS100 y los nombres de columna para ser M1, M2, ..., M200. Normalmente trabajo con datos con miles de filas y columnas, y necesito un buen método para hacerlo. Algunas personas usan algo como attributes(x)$dimnames <- list(...) y algunas usan rownames <- paste(...). ¿Cuáles son todos los métodos posibles?

Mi segunda pregunta es, ¿puedo usar los mismos métodos después de convertir la matriz en un marco de datos?

Respuesta

11

Desde comentario para contestar:

row.names(x) <- paste("SS", 1:nrow(x), sep="") 
colnames(x) <- paste("M" , 1:ncol(x), sep="") 

As @doug escribió, que funciona para matrices y marcos de datos.

6

Sí mismos métodos funcionarán (matriz/hoja.de.datos) - véase más abajo:

A = matrix(1:12, nrow=4) 
colnames(A) = c("col1", "col2", "col3") 
row.names(A) = c("row1", "row2", "row3", "row4") 

dfA = as.data.frame(A) 
row.names(dfA) = c("r1", "r2", "r3", "r4") 
colnames(A) = c("C1", "C2", "C3") 

Y para ahorrar tiempo, usted puede hacer esto:

x = rep("col", dim(M)[2]) 
y = 1:dim(M)[2] 
colnames(M) = paste(x, y, sep="") 
+0

Bien, pero tengo miles de filas y columnas. Simplemente no puedo escribir r1, r2, ... r1253, ... etc. Debería haber algunas operaciones automáticas de contador y pegado. –

+2

'row.names (A) <- paste (" SS ", 1: nrow (A), sep =" "); colnames (A) <- paste (" M ", 1: ncol (A), sep = "") ' – Marek

+0

@Marek: ¿Podría agregar esto como respuesta? –