On Tue, 2007-10-09 at 13:34 -0400, Bornman, Daniel M
wrote:> I'm having trouble setting up the function call to handle two lists of
> matrices. Each list has 6 matrices - Each matrix is 20x10. I need to
> do some basic math on corresponding matrices in each list.
>
> Here are some outputs of these lists, etc...
>
> # first list
> > length(qc.pm)
> [1] 6
> > dim(qc.pm[[1]])
> [1] 20 10
> > qc.pm[[1]][1:4,1:4]
> 441-JP071707.CEL 442-JP071707.CEL 443-JP071707.CEL
> 444-JP071707.CEL
> 495086 11923 9209 7980
> 10088
> 31276 6883 5577 3985
> 5561
> 6479 4730 3700 2170
> 4772
> 673616 9495 8015 5252
> 8178
>
>
> # second list
> > length(qc.mm)
> [1] 6
> > dim(qc.mm[[1]])
> [1] 20 10
> > qc.pm[[1]][1:4,1:4]
> 441-JP071707.CEL 442-JP071707.CEL 443-JP071707.CEL
> 444-JP071707.CEL
> 495086 11923 9209 7980
> 10088
> 31276 6883 5577 3985
> 5561
> 6479 4730 3700 2170
> 4772
> 673616 9495 8015 5252
> 8178
>
>
> I'm having trouble passing 2 args to a function call to use the
lapply()
> method. Any suggestion would be appreciated.
Dan
If each of the lists contain the SAME number of matrices, that is:
length(qc.pm) == length(qc.mm)
then you could do something like this:
sapply(seq(length(qc.pm)),
function(x) DoSomethingWith(qc.pm[[x]], qc.mm[[x]]))
Alternatively, you could do:
DoSomethingWith(x)
{
DoIt(qc.pm[[x]], qc.mm[[x]])
}
mapply(DoSomethingWith, x = seq(length(qc.pm)))
Which approach you take is to some extent style and the structure of the
returned result.
HTH,
Marc Schwartz