On Mon, 3 Apr 2006, Jacob Wegelin wrote:
>
> If you apply the "max" function to a vector of class
"difftime" with
> units="days", the returned value is in units of
"seconds".
>
> Is this not a bug? At any rate it can lead to confusing results if one
> buries a call to "max" deep in some data analysis code.
Why do you think that 1 days and 86400 secs are different quantities? (If
your code treats them differently, that is a bug in your code not in R.)
The reason that you did not find a method for max() is that it is part of
a group generic Summary, and the group generics have methods:
> methods(class="difftime")
[1] *.difftime /.difftime [.difftime Math.difftime
[5] mean.difftime Ops.difftime print.difftime round.difftime
[9] Summary.difftime
The reason Summary.difftime switches to "secs" is that it operates on
more
than one vector which can be expressed in different time units.
Isn't calling this 'wierd' rather discourteous to those who thought
it all
out carefully?
> Details:
>
>> y<-structure(1, class = "difftime", units =
"days")
>> max(y)
> Time difference of 86400 secs
>> y
> Time difference of 1 days
>> min(y)
> Time difference of 86400 secs
>> as.numeric(min(y))
> [1] 86400
>> dput(min(y))
> structure(86400, units = "secs", class = "difftime")
>
>> methods("max")
> no methods were found
>> methods("difftime")
> no methods were found
> Warning message:
> function 'difftime' appears not to be generic in:
methods("difftime")
>
> Thanks for any insights
>
> Jake Wegelin
>
> ______________________________________________
> R-help at 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
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595