Try:

n <- length(mlist)
result <- lapply(1:n,function(i,m,v){m[[i]]%*%v[[i]]},m=mlist,v=vlist)

These days the use of lapply is unlikely to be much, if at all, faster than
the use of a for loop.

    cheers,

        Rolf Turner

On 02/06/2013 06:50 PM, David Romano wrote:
Hi everyone,

I'd like to be able to apply lda to each 2D matrix slice of a 3D array, and
then use the scalings to obtain the corresponding lda scores.

I can use 'apply' to get a list of the lda output for each 2D slice, and
can create a list of the resulting scalings, but I'm not sure how to
multiply them in a vectorized way.


Here's how I made a list of 2D matrices (suggestion on improving this would
be welcome, too!):

aa <- array(1:24,c(4,2,3))
mlist <- apply(aa,2,list)
mlist <- lapply(mlist, unlist)
mlist <- lapply(mlist, function(x) matrix(x,4,2))
and here's how I made a list of vectors:

mm <- matrix(1:6,2,3)
vlist <- apply(mm, list)
vlist <- lapply(vlist, unlist)
Now I'd like to make the list whose i-th element is mlist[[i]]%*%vlist[[i]]
without having to loop through the indices.

Any help would be appreciated!

______________________________________________
R-help@r-project.org 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 via email to