# [R] Odp: Matrix

baptiste auguie ba208 at exeter.ac.uk
Mon Feb 2 18:27:04 CET 2009

```Hi,

Perhaps this can help if you don't want to manually specify the
permutation of indices,

> A=matrix(10,ncol=2,nrow=2)
> B <- 2*A
> C <- rbind(A, B)
>
> C[ as.vector(t(matrix(seq(1,nrow(C)),ncol=2))), ]  # trick to create
> the vector of permutations
>
>      [,1] [,2]
> [1,]   10   10
> [2,]   20   20
> [3,]   10   10
> [4,]   20   20

The transpose operation might slow down the process on very large
matrices, I'm not sure how to improve this.

Hope this helps,

baptiste

On 2 Feb 2009, at 17:02, Paul Smith wrote:

> On Mon, Feb 2, 2009 at 4:05 PM, Petr PIKAL <petr.pikal at precheza.cz>
> wrote:
>> Hi
>>
>> r-help-bounces at r-project.org napsal dne 02.02.2009 16:52:06:
>>
>>>
>>> Hi,
>>>
>>> I have a very basic question on merging two matrices by
>>> alternating the
>>> rows. For illustration, assume two matrices -
>>>
>>> A looks like:
>>>
>>> 10 10
>>> 10 10
>>>
>>> B looks like:
>>>
>>> 20 20
>>> 20 20
>>>
>>> How do I combine them such that I get alternating rows from A and
>>> B? My
>>> final result should be C which looks like:
>>>
>>> 10 10
>>> 20 20
>>> 10 10
>>> 20 20
>>
>> I would rbind both matrices and then indexed the resulting matrix.
>>
>> x<-rep(10,4)
>> y<-rep(20,4)
>> dim(x)<-c(2,2)
>> dim(y)<-c(2,2)
>> z<-rbind(x,y)
>>> z
>>    [,1] [,2]
>> [1,]   10   10
>> [2,]   10   10
>> [3,]   20   20
>> [4,]   20   20
>>
>> ind<-c(seq(1,4,2), seq(2,4,2))
>> z[ind,]
>>
>>> z[ind,]
>>    [,1] [,2]
>> [1,]   10   10
>> [2,]   20   20
>> [3,]   10   10
>> [4,]   20   20
>>
>
> Another solution:
>
> m1 <- matrix(10,4,2)
> m2 <- matrix(20,2,2)
> m1[seq(2,4,2),] <- m2
>
> Paul
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.

_____________________________

Baptiste Auguié

School of Physics
University of Exeter