Matrix Manipulation

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Matrix Manipulation

emj83
Hi,

Is there a quick way to go from this matrix:
> A
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    2    2
[3,]    3    3    3
[4,]    4    4    4
[5,]    5   NA    5
[6,]   NA   NA    6
[7,]   NA   NA   NA

to this matrix:
> B
     [,1] [,2] [,3]
[1,]    1   NA   NA
[2,]    2   NA    1
[3,]    3    1    2
[4,]    4    2    3
[5,]    5    3    4
[6,]   NA    4    5
[7,]   NA   NA    6

without using a loop?
For example using a vector which describes how many NA's are required from the "top" of the matrix- so in this case it would be c(0,2,1).

Many thanks Emma

Reply | Threaded
Open this post in threaded view
|

Re: Matrix Manipulation

jholtman
try this:

> x
     V2 V3 V4
[1,]  1  1  1
[2,]  2  2  2
[3,]  3  3  3
[4,]  4  4  4
[5,]  5 NA  5
[6,] NA NA  6
[7,] NA NA NA
> offset <- c(0,2,1)
> # add the control to the data and make two copies so we can offset
> x.new <- rbind(offset, x, x)
> result <- apply(x.new, 2, function(.col){
+     .col[seq(nrow(x) - .col[1L] + 2L, length = nrow(x))]
+ })
> result
 V2 V3 V4
  1 NA NA
  2 NA  1
  3  1  2
  4  2  3
  5  3  4
 NA  4  5
 NA NA  6


On Thu, Nov 4, 2010 at 11:47 AM, emj83 <[hidden email]> wrote:

>
> Hi,
>
> Is there a quick way to go from this matrix:
>> A
>     [,1] [,2] [,3]
> [1,]    1    1    1
> [2,]    2    2    2
> [3,]    3    3    3
> [4,]    4    4    4
> [5,]    5   NA    5
> [6,]   NA   NA    6
> [7,]   NA   NA   NA
>
> to this matrix:
>> B
>     [,1] [,2] [,3]
> [1,]    1   NA   NA
> [2,]    2   NA    1
> [3,]    3    1    2
> [4,]    4    2    3
> [5,]    5    3    4
> [6,]   NA    4    5
> [7,]   NA   NA    6
>
> without using a loop?
> For example using a vector which describes how many NA's are required from
> the "top" of the matrix- so in this case it would be c(0,2,1).
>
> Many thanks Emma
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Matrix-Manipulation-tp3027266p3027266.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



--
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: Matrix Manipulation

emj83
Many thanks-its worked a treat :-)

Emma