Hi,
## Better way to make your matrix A <- rbind(c(16,10,2,4,8,7), c(16,10,12,14,8,7), c(16,10,13,15,19,17), c(16,9,13,15,9,7)) ## Create logical matrices for conditions 1 & 2 B1 <- rowSums(A[, 2:4] < 10) > 0 B2 <- rowSums(A[, 5:6] < 10) > 0 ## initialize X at the "catch all" X <- rep(3L, nrow(A)) ## overwrite values of X that meet condition 2 X[B2] <- 2L ## overwrite values of X that meet condition 1 X[B1] <- 1L ## Now turn these steps into a little function ## for benchmarking make.ind <- function(A) { B1 <- rowSums(A[, 2:4] < 10) > 0 B2 <- rowSums(A[, 5:6] < 10) > 0 X <- rep(3L, nrow(A)) X[B2] <- 2L X[B1] <- 1L return(X) } ## replicate A to have 4 million rows Abig <- do.call("rbind", rep(list(A), 10^6)) system.time(Xbig <- make.ind(Abig)) ## On my system it takes less than 1 second # user system elapsed # 0.72 0.00 0.72 Hope this helps, Josh On Sun, Aug 7, 2011 at 10:50 PM, gallon li <gallon...@gmail.com> wrote: > Suppose I have a matrix like > > A=matrix(0,4,6) > A[1,]=c(16,10,2,4,8,7) > A[2,]=c(16,10,12,14,8,7) > A[3,]=c(16,10,13,15,19,17) > A[4,]=c(16,9,13,15,9,7) > >> A > [,1] [,2] [,3] [,4] [,5] [,6] > [1,] 16 10 2 4 8 7 > [2,] 16 10 12 14 8 7 > [3,] 16 10 13 15 19 17 > [4,] 16 9 13 15 9 7 > I want to creat an indicator variable X which takes three values: > > X=1 if any of A[,2] to A[,4] is less than 10; for example, A[1,] and A[4,] > is this group; > X=2 if not the above but any of A[,5] to A[,6] is less than 10; for example, > A[2,] is this group; > X=3 if none of the above; for example, A[3,] belongs here. > > I wonder how to implement this fast in R? > > [[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. > -- Joshua Wiley Ph.D. Student, Health Psychology Programmer Analyst II, ATS Statistical Consulting Group University of California, Los Angeles https://joshuawiley.com/ ______________________________________________ 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.