Efficient way to repeat rows (or columns) of a matrix?
Hi Talbot, ma <- matrix(1:6, nrow = 2) rma <- ma[rep(1:2, c(2,3)),] Best, Jim
Talbot Katz wrote:
Hi. If I have a vector, v_1, and another vector of positive integers, i_1, the same length as v_1, then rep(v_1,i_1) will repeat v_i[j] exactly i_1[j] times, like so:
rep(c(1,2,3),c(3,2,1))
[1] 1 1 1 2 2 3 I'd like to do the same sort of thing where I replace v_1 with a matrix, and the jth row of the matrix is repeated i_1 times. Obviously, I could do this with for loops, like the following:
(ma1=matrix(1:6,nrow=2))
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
vr1=c(2,3)
rma1=NULL
for(i in 1:length(vr1)){for(j in 1:vr1[i]){rma1=rbind(rma1,ma1[i,])}}
rma1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 1 3 5
[3,] 2 4 6
[4,] 2 4 6
[5,] 2 4 6
I just thought some of you clever programmers could show me a more efficient
way. (I apologize if this question has come up before and you're tired of
answering it ;-)
Thanks!
-- TMK --
212-460-5430 home
917-656-5351 cell
______________________________________________ R-help at stat.math.ethz.ch 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.
James W. MacDonald University of Michigan Affymetrix and cDNA Microarray Core 1500 E Medical Center Drive Ann Arbor MI 48109 734-647-5623 ********************************************************** Electronic Mail is not secure, may not be read every day, and should not be used for urgent or sensitive issues.