[R] Matrix Manipulation
jim holtman
jholtman at gmail.com
Thu Nov 4 17:07:21 CET 2010
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 <stp08emj at shef.ac.uk> 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.
>
> ______________________________________________
> R-help at r-project.org 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?
More information about the R-help
mailing list