Not in the direction I was looking, but your function "fff" really speed 
up the process, and using it along with "fff3" is fine for me.

Thanks


Petr PIKAL wrote:
> Hi
>
> r-help-boun...@r-project.org napsal dne 16.06.2009 14:31:21:
>
>   
>> 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
>>     
>
> With numbers you may speed it a bit by
>
>   
>> x = c(1,2,rep(1,10000000))
>> system.time(print(all(x[1] == x)))
>>     
> [1] FALSE
>    user  system elapsed 
>    0.13    0.01    0.14 
>   
>> fff<-function(x) {lx<-length(x); (x[1]*lx)==sum(x)}
>> system.time(print(fff(x)))
>>     
> [1] FALSE
>    user  system elapsed 
>    0.03    0.00    0.03 
>
> and with character vector I would try this
>
>   
>> x<-c("a", "b", rep("a", 10000000))
>>     
>
>   
>> fff2<-function(x) length(unique(x))==1
>> system.time(print(fff2(x)))
>>     
> [1] FALSE
>    user  system elapsed 
>    0.39    0.08    0.47 
>
> If you are sure that first let say 1000 can be representative try
>
>   
>> fff2<-function(x) length(unique(x[1:1000]))==1
>> system.time(print(fff2(x)))
>>     
> [1] FALSE
>    user  system elapsed 
>       0       0       0 
>
> or put a double check, try first 1000 and if there is no difference check 
> the rest
>
> fff3<-function(x) if (length(unique(x[1:1000]))==1) length(unique(x))==1 
> else FALSE
>
> Regards
> Petr
>
>
>   
>> 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/>
>>>     <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> /
>>>     /> /
>>>     />______________________________________________ /
>>>     />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> /
>>>
>>>            [[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>
>>>     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.
>>     
>
>
>
>   


        [[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.

Reply via email to