On 20/01/2009, at 9:48 AM, Andrej Kastrin wrote:

Dear all,

Suppose that I have a matrix A

    A <- matrix(c(3,3,3,3,3,3,3,3,3),3,3)

and a logical matrix B

    B <- matrix(c(T,T,T,F,T,T,F,T,F),3,3)

The result  matrix should be

    C <- matrix(c(3,3,3,NA,3,3,NA,3,NA),3,3)

Is there any simple tip or trick to perform this without looping?

(a) It is helpful to state a clear question rather than expecting the
reader to infer from an example just what your question is.

(b) It is advisable to use TRUE and FALSE as the values of a logical
variate, rather than T and F.  The former are reserved words, the latter
are not, which can cause all hell to break loose.

(c) You are wasting a good many key strokes.  You could simply say

        A <- matrix(3,3,3)

(d) I infer that what you want is for C to equal A where B is TRUE
and NA otherwise.  One way to accomplish this is:

        C <- matrix(,3,3)
        C[B] <- A[B]

                cheers,

                        Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}

______________________________________________
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