(1) Using 'C == TRUE' (when you know C is logical) is equivalent to just plain C, only obscure. Similarly, 'C == FALSE' is more confusing than !C.
(2) Consider B[C]. The rows of C have 2, 1, 1, 2, 1 TRUE. entries, so the result here *cannot* be a rectangular array. And whatever it is, it contains only the elements where C is true. (3) You probably already knew that 'ifelse' is vectorised. What you may not have realised is that it preserves array dimensions as well. > A <- cbind(c(1,2), c(3,4)) > B <- cbind(c(5,6), c(7,8)) > C <- cbind(c(FALSE,TRUE), c(TRUE,FALSE)) > ifelse(C, A, B) [,1] [,2] [1,] 5 3 [2,] 2 8 > ifelse(C, A, 0) [,1] [,2] [1,] 0 3 [2,] 2 0 Isn't it nice when the obvious code just works? On Sun, 6 Sep 2020 at 06:18, Vivek Sutradhara <viveksu...@gmail.com> wrote: > Hi > I would like to get help in combining two matrices. Here is my example: > A <- 1:20 > B <- matrix(A,nrow=5,ncol=4) > # B is a numerical matrix > C <- B<7 > C[4,4] <- TRUE > # C is a logical matrix > # if I combine A and C, I get a vector > D1 <- A[C==TRUE] > D1 > D2 <- A[C==FALSE] > D2 > > I want to get a matrix with the same dimensions as matrix A. At the > coordinates given by the vector D1, I want to retain the values in > matrix A. At the locations in D2, I want a zero value. > I want to know if I can do this without using any loops. > Thanks, Vivek > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.