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