This should also work: > mask <- randomized > 0 > mask [,1] [,2] [,3] [,4] [,5] [,6] [1,] FALSE FALSE TRUE FALSE FALSE TRUE [2,] TRUE TRUE FALSE TRUE TRUE TRUE [3,] FALSE TRUE TRUE FALSE FALSE TRUE [4,] TRUE TRUE FALSE TRUE FALSE TRUE > randomized[mask] <- original[mask] > randomized [,1] [,2] [,3] [,4] [,5] [,6] [1,] 0 0 4 0 0 1 [2,] 2 2 0 1 0 2 [3,] 0 5 0 0 0 1 [4,] 3 1 0 5 0 4
------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Laura Cisneros Sent: Monday, July 15, 2013 8:31 AM To: Blaser Nello Cc: r-help@r-project.org Subject: Re: [R] Replacing values of a matrix with values from corresponding rows of another matrix Great! Thank you, Nello. It works on my larger matrices. On Mon, Jul 15, 2013 at 2:40 AM, Blaser Nello <nbla...@ispm.unibe.ch> wrote: > For small matrix you could use a for-loop. > > for (i in 1:nrow(randomized)){ > randomized[i,randomized[i,]!=0] <- sample(original[i,original[i,]!=0]) > } > randomized > > If you have a larger matrix sapply is probably faster > randomized <- t(sapply(1:nrow(randomized), function(i) { > randomized[i,randomized[i,]!=0] <- sample(original[i,original[i,]!=0]) > randomized[i,] > })) > randomized > > Best, > Nello > > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] > On Behalf Of Laura Cisneros > Sent: Montag, 15. Juli 2013 03:09 > To: r-help@r-project.org > Subject: [R] Replacing values of a matrix with values from corresponding > rows of another matrix > > Hello all, > > I have been trying to figure out how to replace non-zero values of a > matrix with non-zero values from corresponding rows from another matrix. > More specifically, let say we have the following original matrix: > > original <- > > matrix(c(0,0,4,0,0,1,2,2,12,1,0,2,0,5,0,0,10,1,3,1,0,5,0,4),byrow=TR UE,nrow=4,ncol=6) > > original > [,1] [,2] [,3] [,4] [,5] [,6] > [1,] 0 0 4 0 0 1 > [2,] 2 2 12 1 0 2 > [3,] 0 5 0 0 10 1 > [4,] 3 1 0 5 0 4 > > And we randomize this matrix such that the total of occurrences of > non-zero values in each row and column are maintained in the randomized > matrix: > > randomized <- > > matrix(c(0,0,12,0,0,1,2,2,0,5,10,2,0,1,4,0,0,1,3,5,0,1,0,4),byrow=TR UE,nrow=4,ncol=6) > > randomized > [,1] [,2] [,3] [,4] [,5] [,6] > [1,] 0 0 12 0 0 1 > [2,] 2 2 0 5 10 2 > [3,] 0 1 4 0 0 1 > [4,] 3 5 0 1 0 4 > > What I would like to do now is replace (in a random fashion) the non-zero > values in each row of the randomized matrix using the non-zero values from > the corresponding rows in the original matrix. For example, for row 1 I > would like to randomly replace 12 and 1 (from the randomized matrix) with 4 > and 1 (from the original matrix). Then do this for each row. > > Any suggestions on how I may be able to accomplish this would be greatly > appreciated. > > Laura > -- > Laura Cisneros, Doctoral Candidate > Dept. of Ecology and Evolutionary Biology University of Connecticut > 75 N. Eagleville Road, U-3043 > Storrs, CT 06269-3043 > > Tel: (860) 486-1772 > Fax: (860) 486-5488 > Alternative Email: laura.cisne...@uconn.edu > > [[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. > > > -- Laura Cisneros, Doctoral Candidate Dept. of Ecology and Evolutionary Biology University of Connecticut 75 N. Eagleville Road, U-3043 Storrs, CT 06269-3043 Tel: (860) 486-1772 Fax: (860) 486-5488 Alternative Email: laura.cisne...@uconn.edu [[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. ______________________________________________ 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.