[R] Newbie question about vector matrix multiplication

Dan Stanger DStanger at eatonvance.com
Wed May 14 21:48:02 CEST 2008


Hi Phil,
That solved the problem.
Thanks,
Dan Stanger
Eaton Vance Management
200 State Street
Boston, MA 02109
617 598 8261

-----Original Message-----
From: Phil Spector [mailto:spector at stat.Berkeley.EDU] 
Sent: Wednesday, May 14, 2008 3:42 PM
To: Dan Stanger
Subject: RE: [R] Newbie question about vector matrix multiplication

Dan -
    Most likely it's due to the fact that you used
read.table for your weight vector, and it gave you
a one row, three column data frame (as it should).
Your weights are in the first row of that, so

ww = as.numeric(w[1,])

will extract them as a vector, and

outer(ww,ww,'*") * X

should get what you want.
                                            - Phil



On Wed, 14 May 2008, Dan Stanger wrote:

> Hi Phil,
> outer(w,w,"*")
> Error in as.vector(X) %*% t(as.vector(Y)) :
>  requires numeric matrix/vector arguments
>
> There must be something about the object I am creating when I read my
> weight vector in, which causes it to be treated improperly.
> My file is:
> \tX\tY\tZ
> 1\t0.581841567\t0.215853099\t0.202305334
> where tabs have been replaced by \t for readability.
>
> Dan Stanger
> Eaton Vance Management
> 200 State Street
> Boston, MA 02109
> 617 598 8261
>
> -----Original Message-----
> From: Phil Spector [mailto:spector at stat.Berkeley.EDU]
> Sent: Wednesday, May 14, 2008 3:27 PM
> To: Dan Stanger
> Subject: Re: [R] Newbie question about vector matrix multiplication
>
> Dan -
>     One possible way to do what you describe is
>
> outer(w,w,"*") * co
>
>                                        - Phil Spector
> 					 Statistical Computing Facility
> 					 Department of Statistics
> 					 UC Berkeley
> 					 spector at stat.berkeley.edu
>
>
>
> On Wed, 14 May 2008, Dan Stanger wrote:
>
>> Hello All,
>>
>> I have a covariance matrix, generated by read.table, and cov:
>>
>> co<-cov(read.table("c:/r.x"))
>>
>>             X            Y            Z
>>
>> X 0.0012517684 0.0002765438 0.0007887114
>>
>> Y 0.0002765438 0.0002570286 0.0002117336
>>
>> Z 0.0007887114 0.0002117336 0.0009168750
>>
>>
>>
>> And a weight vector generated by
>>
>> w<- read.table("c:/r.weights")
>>
>>          X         Y         Z
>>
>> 1 0.5818416 0.2158531 0.2023053
>>
>>
>>
>> I want to compute the product of the matrix and vectors termwise to
>> generate a 3x3 matrix, where m[i,j]=w[i]*co[i,j]*w[j].
>>
>> 0.000423773 7.47216E-08 4.41255E-08
>>
>> 7.47216E-08 1.96566E-11 4.29229E-11
>>
>> 4.41255E-08 4.29229E-11 4.11045E-11
>>
>>
>>
>> Is this possible without writing explicit loops?
>>
>> Thank you,
>>
>> Dan Stanger
>>
>> Eaton Vance Management
>> 200 State Street
>> Boston, MA 02109
>> 617 598 8261
>>
>>
>>
>>
>> 	[[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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.
>>
>



More information about the R-help mailing list