Does this give you want you want?  I assume that you have to also
ignore the first column in matrixC or else you don't have a reasonable
comparison.  Also your data for matrixA and matrixB did not have any
spaces between the numbers, so I just took a guess at what they should
be.

> a.m <- scan(textConnection("     1.851 1.4 0.083 1.001
+ 0.877 1.3 0.116 1.33
+ 1.902 1.2 1.102 0.302
+ 0.864 0.126 1.11 0.252
+ 1.823 0.216 1.002 0.307"))
Read 20 items
> a.m <- matrix(a.m, ncol=4, byrow=TRUE)[, -1]  # ignore 1st column
>
> b.m <- scan(textConnection("    0.876 1.77 0.193 0.328
+ 0.891 1.009 0.238 1.004
+ 0.864 1.115 0.276 0.22
+ 0.887 1.306 0.166 0.239
+ 0.852 1.001 1.008 0.251"))
Read 20 items
> b.m <- matrix(b.m, ncol=4, byrow=TRUE)[, -1]
>
> c.m <- scan(textConnection(" 0.5  1.0   0.5  1.0
+ 1.0   1.0  1.0   0.5
+ 1.0   1.0  1.0   0.5
+ 1.0   1.0  1.0   0.5
+ 0.5   0.5  1.0   0.5"))
Read 20 items
> c.m <- matrix(c.m, ncol=4, byrow=TRUE)[, -1]
> closeAllConnections()
>
> result <- a.m * b.m
> # set to NA entries where c.m != 1
> is.na(result) <- c.m != 1
> result
         [,1]     [,2]     [,3]
[1,] 2.478000       NA 0.328328
[2,] 1.311700 0.027608       NA
[3,] 1.338000 0.304152       NA
[4,] 0.164556 0.184260       NA
[5,]       NA 1.010016       NA
>


On Dec 30, 2007 10:52 PM, Yingchen Wang <[EMAIL PROTECTED]> wrote:
> Hi, dear all:
>   I am a beginner. I appreciate any help or hint from you.
>   I am trying to do calculation with matrices. I have 3 matrices. One is 
> matrixA, 2nd is matrixB, and last is matrixC.
>    Here is matrixA:
>       1.8511.40.0831.001
> 0.8771.30.1161.33
> 1.9021.21.1020.302
> 0.8640.1261.110.252
> 1.8230.2161.0020.307
>
> Next is matrixB:
>     0.8761.770.1930.328
> 0.8911.0090.2381.004
> 0.8641.1150.2760.22
> 0.8871.3060.1660.239
> 0.8521.0011.0080.251
>
> Last is matrixC:
>  0.5  1.0   0.5  1.0
> 1.0   1.0  1.0   0.5
> 1.0   1.0  1.0   0.5
> 1.0   1.0  1.0   0.5
> 0.5   0.5  1.0   0.5
>
> What I want is to match both matrixA and matrixB with matrixC. Ignore the 1st 
> column in matrixA and matrixB. When the element im matrixC is 1.0, multilply 
> the corresponding element in matrixA by the corresponding element in matrixB. 
> Otherwise, ignore it. I wrote the following code with some error in the logic:
>
>
> A<-read.table('matrixA.txt', header=F)
> B<-read.table('matrixB.txt', header=F)
> C<-read.table('matrixC.txt', header=F)
> a1<-as.matrix(A[,1])
> arest<-as.matrix(A[,2:5])
> b1<-as.matrix(B[,1])
> brest<-as.matrix(B[,2:5])
> C<-as.matrix(C)
> if(C= =1){
> ra<-(arest*brest)
> }else {
> throw<-(arest*brest)
> }
> ra
>
> I got a warning message:
> Warning message:the condition has length > 1 and only the first element will 
> be used in: if.....
>
> When I changed the if part to:
>  ifelse (C= =1,ra<-(arest*brest),throw<-(arest*brest))
>
> The result is the multiplication of each element in matrixA and matrixB.
>
> Anyone has an idea about what is wrong. Thanks
>
> Riddle
>
>
>      
> ____________________________________________________________________________________
> Be a better friend, newshound, and
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?

______________________________________________
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