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