Re: [R] Non-procedural access to columns of a matrix

From: Joris Meys <jorismeys_at_gmail.com>
Date: Sat, 19 Jun 2010 02:19:39 +0200

On second thought, the addition only works in the case of a square matrix :

x = matrix(c(11,12,13,1,

21,22,23,3,
31,32,33,2,
41,42,43,1,
51,52,53,3),byrow=T,ncol=4)

> diag(x[,x[,4]])

[1] 11 23 32 41 53

works, but

> diag(x[,x[,4]]) <- diag(x[,x[,4]])+5
> x

     [,1] [,2] [,3] [,4]

[1,]   11   12   13    1
[2,]   21   22   23    3
[3,]   31   37   33    2
[4,]   46   42   43    1
[5,]   51   52   58    3

only changes the last three rows. Quite puzzling in fact...

Cheers
Joris

On Sat, Jun 19, 2010 at 2:07 AM, Joris Meys <jorismeys_at_gmail.com> wrote:
>> diag(x[,x[,4]])
> [1] 11 23 32
>
>> diag(x[,x[,4]]) <- diag(x[,x[,4]])+5
>> x
>     [,1] [,2] [,3] [,4]
> [1,]   16   12   13    1
> [2,]   21   22   28    3
> [3,]   31   37   33    2
>
> Cheers
> Joris
>
> On Fri, Jun 18, 2010 at 8:58 PM, Iuri Gavronski <iuri_at_ufrgs.br> wrote:
>> Hi,
>>
>> I would like to have an index for a column in a matrix encoded in a
>> cell of the same matrix.
>> For example:
>> x = matrix(c(11,12,13,1,
>> 21,22,23,3,
>> 31,32,33,2),byrow=T,ncol=4)
>>
>> In this case, column 4 is the index. I then access the column
>> specified in the index by:
>>> for (i in 1:3) print(x[i,x[i,4]])
>> [1] 11
>> [1] 23
>> [1] 32
>>>
>>> for (i in 1:3) {x[i,x[i,4]] <- x[i,x[i,4]] + 5}
>>> x
>>     [,1] [,2] [,3] [,4]
>> [1,]   16   12   13    1
>> [2,]   21   22   28    3
>> [3,]   31   37   33    2
>>>
>>
>> Is there a way to get the same results without looping?
>>
>> Best,
>>
>> Iuri.
>>
>> ______________________________________________
>> 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.
>>
>
>
>
> --
> Joris Meys
> Statistical consultant
>
> Ghent University
> Faculty of Bioscience Engineering
> Department of Applied mathematics, biometrics and process control
>
> tel : +32 9 264 59 87
> Joris.Meys_at_Ugent.be
> -------------------------------
> Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
>

-- 
Joris Meys
Statistical consultant

Ghent University
Faculty of Bioscience Engineering
Department of Applied mathematics, biometrics and process control

tel : +32 9 264 59 87
Joris.Meys_at_Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php

______________________________________________
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.
Received on Sat 19 Jun 2010 - 00:22:14 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sat 19 Jun 2010 - 01:10:33 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive