[R-es] ampliar una matriz copiando una columna y desplazándola
Si no te entiendo mal, quieres construir una matriz de Hankel (http://en.wikipedia.org/wiki/Hankel_matrix) a partir de la décima columna. Si es asÃ, te puede servir el siguiente código (no estoy seguro de la secuencia que quieres reproducir a partir del sexto elemento de la columna 10; he supuesto que seguirás con 510, etc. y de ahà el vector x). x=c(10, 110, 210, 310, 410, 510, 610, 710, 810) nrow=5 ncol=5 A=matrix(0, nrow=nrow, ncol=ncol) idx=col(A)+row(A)-1 x <- matriz[,10] M <- matrix(x[idx], nrow=nrow, ncol=ncol) Obtendrás lo siguiente: [,1] [,2] [,3] [,4] [,5] [1,] 10 110 210 310 410 [2,] 110 210 310 410 510 [3,] 210 310 410 510 610 [4,] 310 410 510 610 710 [5,] 410 510 610 710 810 Ah, y la matriz original puedes construirla con un sólo paso: matriz<-rbind(a, b, c, d, e) Saludos. Oscar- On Sun, 19 Dec 2010 21:27:23 +0000 (GMT)
Fernando Sanchez <fernandsanche en yahoo.es> wrote:
Hola a todos, copiad en R el siguiente código:
a<-1:10
b<-101:110
c<-201:210
d<-301:310
e<-401:410
matriz<-rbind(a,b)
matriz<-rbind(matriz,c)
matriz<-rbind(matriz,d)
matriz<-rbind(matriz,e)
matriz
El resultado es esta matriz
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
a 1 2 3 4 5 6 7 8 9 10
b 101 102 103 104 105 106 107 108 109 110
c 201 202 203 204 205 206 207 208 209 210
d 301 302 303 304 305 306 307 308 309 310e 401 402 403 404 405
406 407 408 409 410
Me gustarÃa crear una columna 11 en la que en la fila "a" figurara lo que hay en
la columna 10 en la fila "b" en la "b" lo que hay en la c y asà sucesivamente
¿Se podrÃa hacer sin emplear un bucle for? Mi matriz es más larga que la que os
he puesto en el ejemplo pero el problema es el mismo.
saludos y muchas gracias,
Fernando
[[alternative HTML version deleted]]
Oscar Perpiñán Lamigueiro Dpto. de IngenierÃa Eléctrica EUITI-UPM