[R] A matrix calculation

(Ted Harding) Ted.Harding at manchester.ac.uk
Sun Aug 23 21:18:01 CEST 2009


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
>> PLEASE do read the posting guide
>> 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
> PLEASE do read the posting guide
> 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 ------------------------------




More information about the R-help mailing list