[R] array indices in synced vectors

Erich Neuwirth erich.neuwirth at univie.ac.at
Thu Sep 8 16:51:37 CEST 2005


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,]    1    1    1    1    1    3    3    3    3     3
 [2,]    2    2    2    2    2    4    4    4    4     4
 [3,]    1    1    1    1    1    3    3    3    3     3
 [4,]    2    2    2    2    2    4    4    4    4     4
 [5,]    1    1    1    1    1    3    3    3    3     3
 [6,]    2    2    2    2    2    4    4    4    4     4
 [7,]    1    1    1    1    1    3    3    3    3     3
 [8,]    2    2    2    2    2    4    4    4    4     4
 [9,]    1    1    1    1    1    3    3    3    3     3
[10,]    2    2    2    2    2    4    4    4    4     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




More information about the R-help mailing list