# [R] A matrix calculation

David Winsemius dwinsemius at comcast.net
Sun Aug 23 21:35:07 CEST 2009

```There is another "matrix" strategy that succeeds, although it is
clearly less economical that the transpose approach:

matrix(mat[7:1, ],  ncol=nrow(mat), byrow=TRUE)  # will transpose the
matrix

I offer this only as a reminder that the byrow= parameter is available
when appropriate.

--
David.

On Aug 23, 2009, at 3:18 PM, (Ted Harding) wrote:

> The problem with David's proposal is revealed by:
>
>  mat[7:1,]
>  #      [,1] [,2] [,3]
>  # [1,]    7   14   21
>  # [2,]    6   13   20
>  # [3,]    5   12   19
>  # [4,]    4   11   18
>  # [5,]    3   10   17
>  # [6,]    2    9   16
>  # [7,]    1    8   15
>
> which simply reverses the rows. Then:
>
>  c(mat[7:1,])
>  # [1]  7  6  5  4  3  2  1 14 13 12 11 10  9  8 21 20 19 18 17 16 15
>
> since a matrix is stored "by columns" -- i.e. as a vector with its
> elements ordered down each column, per col1 then col2 then ...
>
> And the following won't work either:
>
>  mat[,1:3]
>  #      [,1] [,2] [,3]
>  # [1,]    1    8   15
>  # [2,]    2    9   16
>  # [3,]    3   10   17
>  # [4,]    4   11   18
>  # [5,]    5   12   19
>  # [6,]    6   13   20
>  # [7,]    7   14   21
>
> which is simply the original matrix, and hence:
>
>  c(mat[,1:3])
>  # [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21
>
> for the same reson as before. What you need to do is based on the
> following:
>
>  t(mat[7:1,])
>  #      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
>  # [1,]    7    6    5    4    3    2    1
>  # [2,]   14   13   12   11   10    9    8
>  # [3,]   21   20   19   18   17   16   15
>
> which now has the elements (down the columns) in the order you want.
> So:
>
>  c(t(mat[7:1,]))
>  # [1]  7 14 21  6 13 20  5 12 19  4 11 18  3 10 17  2  9 16  1  8 15
>
> As desired.
> Ted.
>
>
> On 23-Aug-09 18:53:38, Bogaso wrote:
>>
>> No no, I actually want following result :
>>
>> 7,   14,   21, 6,   13,   20, 5,   12,   19,............
>>
>>
>>
>>
>> David Winsemius wrote:
>>>
>>>
>>> On Aug 23, 2009, at 2:37 PM, Bogaso wrote:
>>>
>>>>
>>>> I have suppose a matrix like that
>>>>
>>>>> mat <- matrix(1:21, 7)
>>>>> mat
>>>>    [,1] [,2] [,3]
>>>> [1,]    1    8   15
>>>> [2,]    2    9   16
>>>> [3,]    3   10   17
>>>> [4,]    4   11   18
>>>> [5,]    5   12   19
>>>> [6,]    6   13   20
>>>> [7,]    7   14   21
>>>>
>>>>> From this matrix, I want to create a vector like tha :
>>>>
>>>> c(mat[7,], mat[6,], mat[5,], ....., mat[1,])
>>>>
>>>> Can anyone please guide me, how to do that?
>>>
>>>  c( mat[7:1,] )
>>>
>>> # [1]  7  6  5  4  3  2  1 14 13 12 11 10  9  8 21 20 19 18 17 16 15
>>>
>>> --
>>>
>>> David Winsemius, MD
>>> Heritage Laboratories
>>> West Hartford, CT
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/A-matrix-calculation-tp25106048p25106224.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
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 23-Aug-09                                       Time: 20:17:58
> ------------------------------ XFMail ------------------------------
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help