[R] array indices in synced vectors

2005-09-08 Thread Erich Neuwirth
Let us start with the following definitions

xxx-rep(c(1,2),times=5)
yyy-rep(c(1,2),each=5)
a-c(11,12)
b-matrix(1:4,2,2)

a[xxx] produces
[1] 11 12 11 12 11 12 11 12 11 12

b[xxx,yyy] produces
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]111113333 3
 [2,]222224444 4
 [3,]111113333 3
 [4,]222224444 4
 [5,]111113333 3
 [6,]222224444 4
 [7,]111113333 3
 [8,]222224444 4
 [9,]111113333 3
[10,]222224444 4

so it does an implicit outer for the indices in xxx and yyy.

sapply(1:length(xxx),function(x)b[xxx[x],yyy[x]])
does what I need and produces
 [1] 1 2 1 2 1 4 3 4 3 4

Is there a function taking xxx,yyy, and b as arguments
producing the same result?

Essentially, I am asking for a version of lapply and/or sapply
which works with functions of more than one argument and takes the
iteration arguments as vectors or lists of equal length.




-- 
Erich Neuwirth, Didactic Center for Computer Science
University of Vienna
Visit our SunSITE at http://sunsite.univie.ac.at
Phone: +43-1-4277-39902 Fax: +43-1-4277-9399

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] array indices in synced vectors

2005-09-08 Thread Thomas Lumley
On Thu, 8 Sep 2005, Erich Neuwirth wrote:

 sapply(1:length(xxx),function(x)b[xxx[x],yyy[x]])
 does what I need and produces
 [1] 1 2 1 2 1 4 3 4 3 4

 Is there a function taking xxx,yyy, and b as arguments
 producing the same result?

b[cbind(xxx,yyy)]

 Essentially, I am asking for a version of lapply and/or sapply
 which works with functions of more than one argument and takes the
 iteration arguments as vectors or lists of equal length.

More generally there is mapply(), but the matrix subscript solution is 
better in this example
 mapply(function(i,j) b[i,j], xxx,yyy)
  [1] 1 2 1 2 1 4 3 4 3 4

-thomas

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html