Getting multiple matrix-values using a single command

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Getting multiple matrix-values using a single command

Nils Rüfenacht
Dear all!

I'm trying to get multiple values from a matrix by using a single  
command.

Given a matrix A

A <- matrix(seq(1,9),nrow=3,ncol=3)

How can I get e.g. the values A[1,2] = 4 and A[3,3] = 9 with a single  
command and without using any loop? My first idea was to generate a  
row- and a column vector for the indices, i.e. c(1,3) indicating row  
number 1 (for A[1,2]) and row number 3 (for A[3,3]) and similar for  
column-indices. Then I've tried to call

A[c(1,3),c(2,3)]

but instead of 4 , 9 the result is

[,1] [,2]
[1,]    4    7
[2,]    6    9

Any suggestions?

Regards, Nils

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Getting multiple matrix-values using a single command

Claudia Beleites
use a matrix of n x 2 to index. For details: sec. 5.3 "Index matrices" in the
introduction.

HTH Claudia

Nils Rüfenacht wrote:

> Dear all!
>
> I'm trying to get multiple values from a matrix by using a single command.
>
> Given a matrix A
>
> A <- matrix(seq(1,9),nrow=3,ncol=3)
>
> How can I get e.g. the values A[1,2] = 4 and A[3,3] = 9 with a single
> command and without using any loop? My first idea was to generate a row-
> and a column vector for the indices, i.e. c(1,3) indicating row number 1
> (for A[1,2]) and row number 3 (for A[3,3]) and similar for
> column-indices. Then I've tried to call
>
> A[c(1,3),c(2,3)]
>
> but instead of 4 , 9 the result is
>
> [,1] [,2]
> [1,]    4    7
> [2,]    6    9
>
> Any suggestions?
>
> Regards, Nils
>
> ______________________________________________
> [hidden email] 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.


--
Claudia Beleites
Dipartimento dei Materiali e delle Risorse Naturali
Università degli Studi di Trieste
Via Alfonso Valerio 6/a
I-34127 Trieste

phone: +39 0 40 5 58-37 68
email: [hidden email]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Getting multiple matrix-values using a single command

Henrique Dallazuanna
In reply to this post by Nils Rüfenacht
Try this:

 diag(A[c(1,3),c(2,3)])

2010/3/12 Nils Rüfenacht <[hidden email]>:

> Dear all!
>
> I'm trying to get multiple values from a matrix by using a single command.
>
> Given a matrix A
>
> A <- matrix(seq(1,9),nrow=3,ncol=3)
>
> How can I get e.g. the values A[1,2] = 4 and A[3,3] = 9 with a single
> command and without using any loop? My first idea was to generate a row- and
> a column vector for the indices, i.e. c(1,3) indicating row number 1 (for
> A[1,2]) and row number 3 (for A[3,3]) and similar for column-indices. Then
> I've tried to call
>
> A[c(1,3),c(2,3)]
>
> but instead of 4 , 9 the result is
>
> [,1] [,2]
> [1,]    4    7
> [2,]    6    9
>
> Any suggestions?
>
> Regards, Nils
>
> ______________________________________________
> [hidden email] 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.
>



--
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Getting multiple matrix-values using a single command

David Winsemius
In reply to this post by Nils Rüfenacht

On Mar 12, 2010, at 9:26 AM, Nils Rüfenacht wrote:

> Dear all!
>
> I'm trying to get multiple values from a matrix by using a single  
> command.
>
> Given a matrix A
>
> A <- matrix(seq(1,9),nrow=3,ncol=3)
>
> How can I get e.g. the values A[1,2] = 4 and A[3,3] = 9 with a  
> single command and without using any loop? My first idea was to  
> generate a row- and a column vector for the indices, i.e. c(1,3)  
> indicating row number 1 (for A[1,2]) and row number 3 (for A[3,3])  
> and similar for column-indices. Then I've tried to call
>
> A[c(1,3),c(2,3)]
>
> but instead of 4 , 9 the result is
>
> [,1] [,2]
> [1,]    4    7
> [2,]    6    9

Pass the indices in a matrix:

 >  A[matrix(c(c(1,3), c(2,3)), ncol=2)]
[1] 4 9

--
David

>
> Any suggestions?
>
> Regards, Nils
>
> ______________________________________________
> [hidden email] 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.

David Winsemius, MD
West Hartford, CT

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Getting multiple matrix-values using a single command

David Winsemius

On Mar 12, 2010, at 2:31 PM, David Winsemius wrote:

>
> On Mar 12, 2010, at 9:26 AM, Nils Rüfenacht wrote:
>
>> Dear all!
>>
>> I'm trying to get multiple values from a matrix by using a single  
>> command.
>>
>> Given a matrix A
>>
>> A <- matrix(seq(1,9),nrow=3,ncol=3)
>>
>> How can I get e.g. the values A[1,2] = 4 and A[3,3] = 9 with a  
>> single command and without using any loop? My first idea was to  
>> generate a row- and a column vector for the indices, i.e. c(1,3)  
>> indicating row number 1 (for A[1,2]) and row number 3 (for A[3,3])  
>> and similar for column-indices. Then I've tried to call
>>
>> A[c(1,3),c(2,3)]
>>
>> but instead of 4 , 9 the result is
>>
>> [,1] [,2]
>> [1,]    4    7
>> [2,]    6    9
>
> Pass the indices in a matrix:
>
> >  A[matrix(c(c(1,3), c(2,3)), ncol=2)]
> [1] 4 9

Also works for higher dimensions:

 > A <- array(seq(1,27),dim=c(3,3,3))

 > A
, , 1

      [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2

      [,1] [,2] [,3]
[1,]   10   13   16
[2,]   11   14   17
[3,]   12   15   18

, , 3

      [,1] [,2] [,3]
[1,]   19   22   25
[2,]   20   23   26
[3,]   21   24   27

 > matrix(1:3, ncol=3, nrow=3)
      [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    2    2
[3,]    3    3    3

 > A[matrix(1:3, ncol=3, nrow=3)]
[1]  1 14 27

--
David.

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Getting multiple matrix-values using a single command

Don MacQueen
In reply to this post by Nils Rüfenacht
Everyone is being too complicated.

   c( A[1,2] , A[3,3] )

will do what you ask.

>  A <- matrix(seq(1,9),nrow=3)

>  c( A[1,2] , A[3,3] )
[1] 4 9

But I would assume you have some more general
problem in mind, and I do not know if this simple
approach will meet those needs.

-Don

At 3:26 PM +0100 3/12/10, Nils Rüfenacht wrote:

>Dear all!
>
>I'm trying to get multiple values from a matrix by using a single command.
>
>Given a matrix A
>
>A <- matrix(seq(1,9),nrow=3,ncol=3)
>
>How can I get e.g. the values A[1,2] = 4 and
>A[3,3] = 9 with a single command and without
>using any loop? My first idea was to generate a
>row- and a column vector for the indices, i.e.
>c(1,3) indicating row number 1 (for A[1,2]) and
>row number 3 (for A[3,3]) and similar for
>column-indices. Then I've tried to call
>
>A[c(1,3),c(2,3)]
>
>but instead of 4 , 9 the result is
>
>[,1] [,2]
>[1,]    4    7
>[2,]    6    9
>
>Any suggestions?
>
>Regards, Nils
>
>______________________________________________
>[hidden email] 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.


--
---------------------------------
Don MacQueen
Lawrence Livermore National Laboratory
Livermore, CA, USA
925-423-1062
[hidden email]

______________________________________________
[hidden email] 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.