[R] Matrix multiplication - code problem
Ben Bolker
bolker at ufl.edu
Thu Apr 2 20:10:25 CEST 2009
I think this works in general, although it's
a little bit clunky:
id_y <- array(1:10,dim=c(2,1,5))
id_yt <- aperm(id_y,c(2,1,3))
m_id <- array(dim=c(dim(id_y)[1],dim(id_y)[1],dim(id_y)[3]))
for (i in 1:dim(id_y)[3]){
m1 <- array(id_y[,,i],dim=dim(id_y)[1:2])
m2 <- array(id_yt[,,i],dim=dim(id_yt)[1:2])
m_id[,,i] <- m1 %*% m2
}
m_id
There may also be a clever way to do this with the tensor() function,
in the tensor package, but I haven't found the right permutation yet ...
Patrick Burns wrote:
>
> You need to put in calls to 'as.matrix'. It's
> a bit tricky though -- what you want depends
> on whether it is the first or second subscript
> that has length 1.
>
> as.matrix(id_y[,,i])
>
> if the second dimension has length 1.
>
> t(as.matrix(id_y[,,i]))
>
> if the first dimension has length 1.
>
>
> Patrick Burns
> patrick at burns-stat.com
> +44 (0)20 8525 0696
> http://www.burns-stat.com
> (home of "The R Inferno" and "A Guide for the Unwilling S User")
>
> MarcioRibeiro wrote:
>> Hi again,
>> I understood what you guys explained...
>> But, there isn't a way to do a multiplication of matrix with a FOR
>> command
>> or otherelse where one o my dimension is ONE...
>> Well, as my data file is small, I did the procedure at the excel... But,
>> this is not the good procedure...
>> Thanks,
>> Marcio
>>
>>
>> Uwe Ligges-3 wrote:
>>
>>>
>>> MarcioRibeiro wrote:
>>>
>>>> Hi listers,
>>>> I am having some trouble in a matrix multiplication...
>>>> I have already checked some posts, but I didn't find my problem...
>>>> I have the following code...
>>>> But I am not getting the right multiplication...
>>>> I checked the dimension and they are fine...
>>>>
>>>> id_y <- array(1:10,dim=c(2,1,5))
>>>> id_yt<-aperm(id_y,c(2,1,3))
>>>> m_id<-array(dim=c(dim(id_y)[1],dim(id_y)[1],dim(id_y)[3]))
>>>> for (i in 1:dim(id_y)[3]){
>>>> m_id[,,i]<-id_y[,,i]%*%id_yt[,,i]
>>>> }
>>>> m_id
>>>>
>>>>
>>>>
>>> Due to indexing, you are loosing dimensions.
>>> The problem is that you expect to *loose exactly one* dimension in this
>>> case (hence drop = FALSE won't be of help right away). Hence it might be
>>> a good idea to know what you are going to have exactly at the end (as
>>> in- and output).
>>>
>>> Uwe Ligges
>>>
>>> ______________________________________________
>>> R-help at 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.
>>>
>>>
>>>
>>
>>
>
> ______________________________________________
> R-help at 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.
>
>
--
View this message in context: http://www.nabble.com/Matrix-multiplication---code-problem-tp22835003p22853920.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list