Never mind... the solution was to read the source code of
as.Date.character. It turns out the default format= is meaningless.
If 'format' is not given in the call to as.Date, it is NOT assumed to
be , and the function gives very different results from a call where
the argument format= is given. G...
Peter
On Wed, Aug 20, 2014 at 11:56 AM, Peter Langfelder
peter.langfel...@gmail.com wrote:
Hi all,
I have recently started working with Date objects and find the
experience unsettling, to put it mildly.
The help for as.Date says, in part:
## S3 method for class 'character'
as.Date(x, format = , ...)
x: An object to be converted.
format: A character string. If not specified, it will try
‘%Y-%m-%d’ then ‘%Y/%m/%d’ on the first non-‘NA’ element,
and give an error if neither works.
If I read this correctly,
as.Date(2012-04-30) and
as.Date(2012-04-30, format = )
should give the same results, but they don't:
as.Date(2012-04-30)
[1] 2012-04-30
as.Date(2012-04-30, format = )
[1] 2014-08-20
Note the latter gives today's date, without any warning or message.
What method is called in the latter case?
Another issue I am running into, that is probably connected to the
'format' argument above, is trying to convert a numeric or character
in the same call. Basically, I would like to call
as.Date(object, format = , origin = 1970-1-1)
where object can be a Date, numeric or character, in the hope that the
appropriate method will be selected and will ignore unnecessary
arguments.
Here's what I get:
as.Date( as.numeric(Sys.Date()), origin = 1970-1-1)
[1] 2014-08-20 Correct
as.Date( as.numeric(Sys.Date()), origin = 1970-1-1, format = )
[1] 2059-04-08 ???
Excuse the coarse language, but WTF??? The first call confirms that
the origin is specified correctly, and the second gives a date removed
from the origin by twice the number of days than the actual input??
as.numeric(Sys.Date())
[1] 16302
as.numeric(as.Date( as.numeric(Sys.Date()), origin = 1970-1-1))
[1] 16302
as.numeric(as.Date( as.numeric(Sys.Date()), origin = 1970-1-1, format =
))
[1] 32604
Thanks in advance for any pointers!
Peter
PS: I know my R is not the most up to date, but I haven't found
anything about Date mentioned in the changelog for the 3.x series.
sessionInfo()
R version 3.0.2 Patched (2013-10-08 r64039)
Platform: x86_64-unknown-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.utf8 LC_NUMERIC=C
[3] LC_TIME=en_US.utf8LC_COLLATE=en_US.utf8
[5] LC_MONETARY=en_US.utf8LC_MESSAGES=en_US.utf8
[7] LC_PAPER=en_US.utf8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
__
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.