Thanks Jun and Phil!
On Thu, Jul 15, 2010 at 12:16 PM, Phil Spector <spec...@stat.berkeley.edu> wrote: > Juliet - > Since you're operating on each column, apply() would > be the appropriate function; > > mymat = apply(mymat,2,function(x){x[x<0] = min(x[x>0]);x}) > > > - Phil Spector > Statistical Computing Facility > Department of Statistics > UC Berkeley > spec...@stat.berkeley.edu > > > > On Thu, 15 Jul 2010, Juliet Hannah wrote: > >> Hi Group, >> >> I have a matrix, and I would like to replace numbers less than 0 by >> the smallest minimum number. Below is an >> small matrix, and the loop I used. I would like to get suggestions on >> the "R way" to do this. >> >> Thanks, >> >> Juliet >> >> # example data set >> >> mymat <- structure(c(-0.503183609420937, 0.179063475173256, >> 0.130473004669938, >> -1.80825226960127, -0.794910626384209, 1.03857280868547, >> 0.362120146065799, >> -2.01124119488992, -1.49083525457822, -0.356354715035589, >> -0.306686279071398, >> 0.0789120002882668, 1.50314029609087, -0.0177677865019544, >> 1.31642572649823, >> 1.78842032090131, -0.991393884836917, -0.868946528068323, >> -0.325472385456867, >> 0.119383948888965), .Dim = c(5L, 4L)) >> >> >> # replacement of negative numbers >> >> for (mycol in 1:ncol(mymat)) { >> sort_dat <- sort(mymat[,mycol]) >> min_pos_index <- min(which(sort_dat >0 )) >> min_pos_val <- sort_dat[min_pos_index] >> neg_nums <- which(mymat[,mycol] <= 0) >> mymat[neg_nums,mycol] <- min_pos_val >> } >> >> ______________________________________________ >> 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.