[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