[R-es] ampliar una matriz copiando una columna y desplazándola
Oscar Perpiñan Lamigueiro
oscar.perpinan en upm.es
Dom Dic 19 23:20:58 CET 2010
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
Más información sobre la lista de distribución R-help-es