[R] elements in each row of a matrix to the left.

john.gavin@ubs.com john.gavin at ubs.com
Mon Feb 27 20:33:54 CET 2006


Hi,

Given a matrix like

(z <- matrix(c(
1, 1, NA, NA, NA, NA,
1,  NA, 1,  NA, 1, NA,
NA, 1, 1,  1,  NA, NA), ncol = 3))

     [,1] [,2] [,3]
[1,]    1    1   NA
[2,]    1   NA    1
[3,]   NA    1    1
[4,]   NA   NA    1
[5,]   NA    1   NA
[6,]   NA   NA   NA

is there a vectorised way to produce the output like

     [,1] [,2] [,3]
[1,]    1    1   NA
[2,]    1   NA    1
[3,]    1    1   NA
[4,]    1   NA   NA
[5,]    1   NA   NA
[6,]   NA   NA   NA

That is, given an n by m matrix, and going row by row, 
if the first non-NA element is in column k
I want to move elements in columns from k to m
to columns 1 to m-k+1 with NAs filling in from 
m-k+2 to m.

> version
         _              
platform i386-pc-mingw32
arch     i386           
os       mingw32        
system   i386, mingw32  
status                  
major    2              
minor    2.1            
year     2005           
month    12             
day      20             
svn rev  36812          
language R        

Regards,

John.

John Gavin <john.gavin at ubs.com>,
Quantitative Risk Control,
UBS Investment Bank, 6th floor, 
100 Liverpool St., London EC2M 2RH, UK.
Phone +44 (0) 207 567 4289
Fax   +44 (0) 207 568 5352

Visit our website at http://www.ubs.com

This message contains confidential information and is intend...{{dropped}}




More information about the R-help mailing list