utkarshsinghal
2009-Jun-16 11:42 UTC
[R] Testing if all elements are equal in a vector/matrix
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 <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" <HDoran@air.org> / />To: <vincent.goulet@act.ulaval.ca>, <r-help@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-bounces@stat.math.ethz.ch / />[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Vincent Goulet / />Sent: Monday, August 29, 2005 3:35 PM / />To: r-help@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 <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 / /> / />______________________________________________ / />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 / /> / />______________________________________________ / />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 / [[alternative HTML version deleted]]
jim holtman
2009-Jun-16 11:55 UTC
[R] Testing if all elements are equal in a vector/matrix
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.singhal@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 > <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" <HDoran@air.org> / > />To: <vincent.goulet@act.ulaval.ca>, <r-help@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-bounces@stat.math.ethz.ch / > />[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Vincent Goulet / > />Sent: Monday, August 29, 2005 3:35 PM / > />To: r-help@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/> > <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 / > /> / > />______________________________________________ / > />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<http://www.r-project.org/posting-guide.html>/ > /> / > />______________________________________________ / > />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<http://www.r-project.org/posting-guide.html>/ > > [[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<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]]