On Sun, Jul 5, 2009 at 8:18 AM, David Winsemius<dwinsem...@comcast.net> wrote: > > On Jul 5, 2009, at 10:50 AM, Uwe Ligges wrote: > >> >> >> David Winsemius wrote: >>> >>> So if your values are calculated from other values then consider using >>> all.equal() >>> And repeated applications of the testing criteria process are effective: >>> test[3,][which(names(test)=="C1"):(which(test[3,] == 0.0)-1)] >>> C1 C2 C3 >>> 3 0.52 0.66 0.51 >>> (and a warning that does not seem accurate to me.) >>> In which(names(test) == "C1"):(which(test[3, ] == 0) - 1) : >>> numerical expression has 3 elements: only the first used >> >> >> David, >> >> # which(test[3,] == 0.0) >> [1] 6 7 8 >> >> and in a:b a and b must be length 1 vectors (scalars) otherwise just the >> first element (in this case 6) is used. >> >> That leads us to the conclusion that writing the line above is not really >> the cleanest way or you intended something different .... > > Thanks, Uwe. I see my confusion. I did want 6 to be used and it looks as > though I would not be getting in truouble this way, but a cleaner method > would be to access only the first element of which(test[3, ] == 0): > > test[3,][ which(names(test) == "C1") : (which(test[3,] == 0.0)[1]-1) ] > >> >> David > >>> Seems to me that all of the element were used. I cannot explain that >>> warning but am pretty sure it can be ignored. >>> > > David Winsemius, MD > Heritage Laboratories > West Hartford, CT > >
OK - making lots more headway. Thanks for your help. QUESTION: How do I handle the case where I'm testing for 0 and don't find it? In this case I need to all of the row from C1:C6. test <- data.frame(A=1:10, B=100, C1=runif(10), C2=runif(10), C3=runif(10), C4=runif(10), C5=runif(10), C6=runif(10)) test<-round(test,2) #Make array ragged test$C3[2]<-0;test$C4[2]<-0;test$C5[2]<-0;test$C6[2]<-0 test$C4[3]<-0;test$C5[3]<-0;test$C6[3]<-0 test$C6[7]<-0 test$C4[8]<-0;test$C5[8]<-0;test$C6[8]<-0 test #C1 always the same so calculate it only once StartCol <- which(names(test)=="C1") #Print row 3 explicitly test[3,][StartCol :(which(test[3,] == 0.0)[1]-1)] #Row 6 fails because 0 is not found test[6,][StartCol :(which(test[6,] == 0.0)[1]-1)] EndCol <- which(test[6,] == 0.0)[1]-1 EndCol Thanks, Mark ______________________________________________ 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.