How could I miss that... I'm feeling low :(
jim holtman wrote: > I have wondered about this way of testing for equality: > > > x <- c(1,0,3,0) > > x[1] * length(x) == sum(x) > [1] TRUE > > x <- rep(1,4) > > x[1] * length(x) == sum(x) > [1] TRUE > This would seem to indicate that both vectors contain the same values, > but not necessarily true. > > On Fri, Jun 19, 2009 at 8:18 AM, Petr PIKAL <petr.pi...@precheza.cz > <mailto:petr.pi...@precheza.cz>> wrote: > > Hi > > utkarshsinghal <utkarsh.sing...@global-analytics.com > <mailto:utkarsh.sing...@global-analytics.com>> napsal dne > 17.06.2009 15:29:34: > > > I will wait for the next version-2.9.1 and presently using Petr's > suggestion, i.e., > > (x[1]*length(x))==sum(x) > > which significantly reduced the run time. > > > > The problem is now there might be only small differences ,say, > of the > order of > > 10^-10 which I want to ignore. > > > > So I used: > > isTRUE(all.equal((x[1]*length(x)),sum(x))) > > as suggested in the documentation of all.equal. > > > > But this again increased the run time to five times. > > > > 1) Is there any faster way of doing the same? > > Maybe (not tested) > > (x[1]*length(x))==round(sum(x),10) > > Petr > > > 2) Will the function "anyDuplicated" treat almost equal values as > duplicated > > or not? Actually I need both the options. > > > > > > Regards > > Utkarsh > > > > > > > > Prof Brian Ripley wrote: > > On Tue, 16 Jun 2009, Prof Brian Ripley wrote: > > > On Tue, 16 Jun 2009, jim holtman wrote: > > > I think the only way that you are going to get it to stop on the > first > > mismatch is to write your own function in C if you are concerned > about > the > > time. Matching on character vectors will be even more costly > since it > is > > having to loop to check the equality of each character in each > element. > > This is one of the places it might pay to convert to factors and > then > the > > comparison only uses the integer values assigned to the factors. > > > > Not so in a recent R: comparison of character vectors is now done by > comparing > > pointers in the first instance so (at least on a 32-bit > platform) is as > fast > > as comparing integers. And on x86_64 Linux: > > > x <- as.character(c(1,2,rep(1,10000000))) > > system.time(print(all(x[1] == x))) > > [1] FALSE > > user system elapsed > > 0.123 0.019 0.142 > > > system.time(xx <- as.factor(x)) > > user system elapsed > > 9.874 0.284 10.159 > > system.time(print(all(xx[1] == xx))) > > [1] FALSE > > user system elapsed > > 0.511 0.145 0.656 > > > > Recent pre-release versions of R (e.g. 2.9.1 beta) allow > > > system.time(anyDuplicated(x)) > > user system elapsed > > 0.034 0.078 0.113 > > system.time(anyDuplicated(xx)) > > user system elapsed > > 0.037 0.076 0.113 > > > > I'm sorry, a line got reverted here: I had edited this to say > > > > 'which is a C-level speedup of the sort the original poster > seemed to be > looking for' > > > > > > > On Tue, Jun 16, 2009 at 8:31 AM, utkarshsinghal < > > utkarsh.sing...@global-analytics.com > <mailto:utkarsh.sing...@global-analytics.com>> wrote: > > > Hi Jim, > > > > What you are saying is correct. Although, my computer might not have > same > > speed and I am getting the following for 10M entries: > > > > user system elapsed > > 0.559 0.038 0.607 > > > > Moreover, in the case of character vectors, it gets more than > double. > > > > In my modeling, which is already highly time consuming, I need > to do > check > > this for few thousand vectors and the entries can easily be 10M > in each > > vector. So I am just looking for any possibilities of time > saving. I am > > > pretty sure that whenever elements are not all equal, it can be > concluded > > from any few entries (most of the times). It will be worth if I > can find > a > > way which stops checking further the moment it find two distinct > elements. > > > > Regards > > Utkarsh > > > > > > > > jim holtman wrote: > > > > Just check that the first (or any other element) is equal to all the > rest: > > > x = c(1,2,rep(1,10000000)) # 10,000,000 > > system.time(print(all(x[1] == x))) > > [1] FALSE > > user system elapsed > > 0.18 0.00 0.19 > > > > > This was for 10M entries. > > > > On Tue, Jun 16, 2009 at 7:42 AM, utkarshsinghal < > > utkarsh.sing...@global-analytics.com > <mailto:utkarsh.sing...@global-analytics.com>> wrote: > > > > > Hi All, > > > > There are several replies to the question below, but I think > there must > > exist a better way of doing so. > > I just want to check whether all the elements of a vector are > same. My > > vector has one million elements and it is highly likely that > there are > > distinct elements in the first few itself. For example: > > > > > x = c(1,2,rep(1,100000)) > > > > I want the answer as FALSE, which is clear from the first two > > observations itself and we don't need to check for the rest. > > > > Does anybody know the most efficient way of doing this? > > > > Regards > > Utkarsh > > > > > > > > From: Francisco J. Zagmutt <gerifalte28_at_hotmail.com > <http://gerifalte28_at_hotmail.com/> > > <mailto:gerifalte28_at_hotmail.com > <mailto:gerifalte28_at_hotmail.com> > > > > ?Subject=Re:%20%5BR%5D%20Testing%20if%20all%20elements%20are%20equal%20in%20a% > > 20vector/matrix>> > > > > Date: Tue 30 Aug 2005 - 06:05:20 EST > > > > > > Hi Doran > > > > The documentation for isTRUE reads 'isTRUE(x)' is an abbreviation of > > 'identical(TRUE,x)' so actually Vincent's solutions is "cleaner" > than > > using identical :) > > > > Cheers > > > > Francisco > > > > />From: "Doran, Harold" <hdo...@air.org <mailto:hdo...@air.org>> / > > />To: <vincent.gou...@act.ulaval.ca > <mailto:vincent.gou...@act.ulaval.ca>>, <r-h...@stat.math.ethz.ch > <mailto:r-h...@stat.math.ethz.ch>> / > > />Subject: Re: [R] Testing if all elements are equal in a > vector/matrix > / > > />Date: Mon, 29 Aug 2005 15:49:20 -0400 / > > /> / > > >See ?identical > > > <http://tolstoy.newcastle.edu.au/R/help/05/08/11201.html#11202qlink1> > > /> / > > />-----Original Message----- / > > />From: r-help-boun...@stat.math.ethz.ch > <mailto:r-help-boun...@stat.math.ethz.ch> / > > />[mailto:r-help-boun...@stat.math.ethz.ch > <mailto:r-help-boun...@stat.math.ethz.ch>] On Behalf Of Vincent Goulet > / > > />Sent: Monday, August 29, 2005 3:35 PM / > > />To: r-h...@stat.math.ethz.ch <mailto:r-h...@stat.math.ethz.ch> / > > />Subject: [R] Testing if all elements are equal in a > vector/matrix / > > /> / > > /> / > > />Is there a canonical way to check if all elements of a vector or > > matrix are / > > />the same? Solutions below work, but look hackish to me. / > > /> / > > /> > x <- rep(1, 10) / > > /> > all(x == x[1]) # == operator does not provide for small > differences > / > > */>[1] TRUE / > > */> > isTRUE(all.equal(x, rep(x[1], length(x)))) # ugly / > > */>[1] TRUE / > > */> / > > />Best, / > > /> / > > />Vincent / > > />-- / > > /> Vincent Goulet, Associate Professor / > > /> ?cole d'actuariat / > > /> Universit? Laval, Qu?bec / > > /> Vincent.Goulet_at_act.ulaval.ca > <http://vincent.goulet_at_act.ulaval.ca/>< > http://vincent.goulet_at_act.ulaval.ca/> > > <mailto:Vincent.Goulet_at_act.ulaval.ca > <mailto:Vincent.Goulet_at_act.ulaval.ca> > > > > ?Subject=Re:%20%5BR%5D%20Testing%20if%20all%20elements%20are%20equal%20in%20a% > > 20vector/matrix> > > http://vgoulet.act.ulaval.ca <http://vgoulet.act.ulaval.ca/> / > > /> / > > />______________________________________________ / > > />r-h...@stat.math.ethz.ch <mailto:r-h...@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 > <http://www.r-project.org/posting-guide.html><http://www.r-project.org/ > > posting-guide.html>/ > > /> / > > />______________________________________________ / > > />r-h...@stat.math.ethz.ch <mailto:r-h...@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 > <http://www.r-project.org/posting-guide.html><http://www.r-project.org/ > > posting-guide.html>/ > > > > [[alternative HTML version deleted]] > > > > > > ______________________________________________ > > R-help@r-project.org <mailto: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 > <http://www.r-project.org/posting-guide.html>< > http://www.r-project.org/posting-guide.html> > > and provide commented, minimal, self-contained, reproducible code. > > > > > > > > > -- > > Jim Holtman > > Cincinnati, OH > > +1 513 646 9390 > > > > What is the problem that you are trying to solve? > > > > > > > > > > > -- > > Jim Holtman > > Cincinnati, OH > > +1 513 646 9390 > > > > What is the problem that you are trying to solve? > > > > [[alternative HTML version deleted]] > > > > > > > -- > > Brian D. Ripley, rip...@stats.ox.ac.uk > <mailto:rip...@stats.ox.ac.uk> > > Professor of Applied Statistics, > http://www.stats.ox.ac.uk/~ripley/ > <http://www.stats.ox.ac.uk/%7Eripley/> > > University of Oxford, Tel: +44 1865 272861 (self) > > 1 South Parks Road, +44 1865 272866 (PA) > > Oxford OX1 3TG, UK Fax: +44 1865 272595 > > > > ______________________________________________ > > R-help@r-project.org <mailto: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 > <http://www.r-project.org/posting-guide.html> > > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org <mailto: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 > <http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > > > > > -- > Jim Holtman > Cincinnati, OH > +1 513 646 9390 > > What is the problem that you are trying to solve? [[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.