[R] Mystified - comparing chron times

David Winsemius dwinsemius at comcast.net
Fri Sep 16 16:58:37 CEST 2011


On Sep 16, 2011, at 10:08 AM, B77S wrote:

> I'm sure Sarah's solution works (and she knows more about R than  
> myself), but
> I ran into a similar problem and used:
> as.character(start.time)==as.character(expected_start.time)

What you did was an implicit rounding of the values to the digits  
level specified by some process, possibly a default formatting spec,  
guessing to round(num, 7) . I tried to see whether package chron might  
specify i,t but this effort only produced this

 > cur.opts <- names(options())
 > require(chron)
Loading required package: chron
 >  names(options())[!names(options()) %in% cur.opts]
[1] "chron.year.abb"    "chron.year.expand"

What Sarah suggested was essentially rounding to 16 digits to the  
right of the decimal.

If the OP had offered dput() on these objects, there would  have been  
a lot less guessing.

-- 
David

>
> good luck regardless.
>
> -BS
>
>
> Sarah Goslee wrote:
>>
>> Sounds like a case for FAQ 7.31, or, yet another machine precision  
>> issue.
>> Try all.equal() instead of ==
>>
>> Sarah
>>
>> On Fri, Sep 16, 2011 at 7:36 AM, mebstyne <mebstyne at me.com>  
>> wrote:
>>> I have two local variables: startTime and expectedStartTime.  Both  
>>> are
>>> chron
>>> related objects.
>>> When I look at the class for the objects I can see they are of class
>>> "times".
>>> When I print them to the console, they both read: "09:30:00"
>>> When I print them as.numeric(), they both read: 0.3958333
>>> When I try and compare them: (as.numeric(startTime) ==
>>> as.numeric(expectedStartTime)) it returns FALSE.
>>>
>>> I'm mystified.  I would expect them to be true.
>>> Perhaps a key to the riddle is how the two objects were created.
>>>
>>> "startTime" was created by reading a text field from a socket,  
>>> converting
>>> it
>>> into a chron object using chron(x, "%m/$d/%Y %H:%M:%S"), then  
>>> finally I
>>> created a time out of the chron by doing a quick butchering of the
>>> "integer"
>>> portion of the numeric: (times(as.numeric(x) - as.integer(x))
>>>
>>> "expectedStartTime" was created by the command times('09:30:00')
>>>
>>> Any suggestions?  Tips?  Alternative approaches?  I've pulled too  
>>> many
>>> hairs
>>> triaging this.
>>> All hands welcomed on this little challenge.
>>>
>>> Big picture goal of what I'm doing: I have a list of chron objects  
>>> with
>>> both
>>> dates and times portion filled out and I'm trying to determine if  
>>> the
>>> time
>>> is a specific time (specific to the minute).
>>>
>>> Thanks!
>>>
>>> -Michael
>>>
>>
>> -- 
>> Sarah Goslee
>> http://www.functionaldiversity.org
>>
>> ______________________________________________
>> R-help at 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.
>>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Mystified-comparing-chron-times-tp3817855p3818176.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list