[R] Efficient way for multiplying vectors with a only certain number of rows in a matrix
ralph.statistics at gmx.net
Mon Jan 21 11:53:34 CET 2008
Your approach definitely works and gives the result that I need, but the
calculations takes quite a while. As this problem itself is part of loop
(Markov Chain), I am still looking for faster and truely vectorized
solutions, maybe after a re-organisation of the data matrices?
I'd be grateful for any further suggestions!
Henrique Dallazuanna wrote:
> n.obs = 800
> n.rowsperobs = 300
> n.param = 23
> Designmat = matrix(rnorm(n.obs*n.rowsperobs*n.param),ncol=n.param)
> Betamat = matrix(rnorm(n.obs*n.param),nrow=n.param)
> Design.spl <- split(as.data.frame(Designmat), rep(1:n.obs,
> res <- sapply(1:ncol(Betamat),
> On 20/01/2008, Ralph79 <ralph.statistics at gmx.net> wrote:
>> Dear R-users,
>> I am working on a problem that I am currently not able to solve
>> It is about multiplying one column of a matrix with only a certain number
>> rows of another matrix.
>> Let me illustrate my problem with an example:
>> n.obs = 800
>> n.rowsperobs = 300
>> n.param = 23
>> Designmat = matrix(rnorm(n.obs*n.rowsperobs*n.param),ncol=n.param)
>> Betamat = matrix(rnorm(n.obs*n.param),nrow=n.param)
>> In this example, "Designmat" consists of 800*300 rows, meaning that 300
>> belong to one of the 800 observations.
>> Each observation has also one parameter vector, which is one column in
>> "Betamat"-matrix (i.e. Betamat contains the n.obs parameter vectors).
>> My goal is to multiply the parameter vector of each observation (i.e. the
>> respective column in Betamat) with ONLY THOSE ROWS IN DESIGNMAT that
>> to this observation.
>> Applied to the example above: The first column in Betamat has to be
>> multiplied with the first 300 rows in Designmat, the second column in
>> Betamat has to be multiplied with rows 301 to 600 in Betamat and so on.
>> Hence, the result of this operation should be a vector of length 240000.
>> I can think of solutions implying several loops and/or lapplys, but I
>> that there might be a much easyer and above all faster solution.
>> Thank you very much for your help in advance.
>> View this message in context:
>> Sent from the R help mailing list archive at Nabble.com.
>> R-help at r-project.org mailing list
>> PLEASE do read the posting guide
>> and provide commented, minimal, self-contained, reproducible code.
> Henrique Dallazuanna
> 25° 25' 40" S 49° 16' 22" O
> R-help at r-project.org mailing list
> PLEASE do read the posting guide
> and provide commented, minimal, self-contained, reproducible code.
View this message in context: http://www.nabble.com/Efficient-way-for-multiplying-vectors-with-a-only-certain-number-of-rows-in-a-matrix-tp14988427p14995032.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help