On Fri, 2005-09-16 at 10:34 -0700, Martin Lam wrote: > Hi, > > I was wondering if it's possible to get the row > numbers from a filtering. Here's an example: > > # give me the rows with sepal.length == 6.2 > iris[(iris[,1]==6.2),] > > # output > Sepal.Length Sepal.Width Petal.Length Petal.Width > Species > 69 6.2 2.2 4.5 1.5 > versicolor > 98 6.2 2.9 4.3 1.3 > versicolor > 127 6.2 2.8 4.8 1.8 > virginica > 149 6.2 3.4 5.4 2.3 > virginica > > What I really want is that it return the row numbers: > 69, 98, 127, 149. > > Thanks in advance, > > Martin
Martin, First: Be very, very careful when performing exact equalities on floating point numbers. They won't always result in the answer you expect. For more information see R FAQ 7.31: Why doesn't R think these numbers are equal? Second: See ?all.equal, ?sapply and ?which. Here is a possible vectorized solution: > which(sapply(iris[, 1], function(x) isTRUE(all.equal(x, 6.2)))) [1] 69 98 127 149 The above applies isTRUE(all.equal(x, 6.2)) for each element 'x' in iris[, 1], returning the indices of the TRUE results for the near equality comparison, based upon the tolerance argument in all.equal(). HTH, Marc Schwartz ______________________________________________ R-help@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