From murdoch.duncan at gmail.com  Wed Aug 20 22:18:36 2014
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Wed, 20 Aug 2014 16:18:36 -0400
Subject: [Rd] as.Date.character suggestion
In-Reply-To: <CA+hbrhUZnZMMPL9gfK3rYzR7z9K8tEwsyFC2VOa_y0Lu254bZQ@mail.gmail.com>
References: <CA+hbrhUZnZMMPL9gfK3rYzR7z9K8tEwsyFC2VOa_y0Lu254bZQ@mail.gmail.com>
Message-ID: <53F5029C.3080909@gmail.com>

On 20/08/2014, 4:11 PM, Peter Langfelder wrote:
> The default format="" in as.Date.character is supremely confusing. The
> help shows as.Date defined as
> 
> ## S3 method for class 'character'
>      as.Date(x, format = "", ...)
> 
> yet the function behaves very differently when format is not specified
> and when it is specified to its default:
> 
> as.Date("2012-01-01")
> [1] "2012-01-01"
>> as.Date("2012-01-01", format = "")
> [1] "2014-08-20"  ### Gives today.
> 
> 
> The default setting is never used, because if format is not given,
> values "%Y-%m-%d" and "%Y/%m/%d" are tried for it (rather than "").
> 
> My suggestion is to leave out the default "" for format in as.Date:
> 
> as.Date(x, format, ...)
> 
> If this causes a conflict in the S3 dispatching, at least indicate in
> the help that the default is never used and the function works
> differently if format is specified to its default.

Wouldn't it be simpler to change the test from

if (missing(format))

to

if (format == "")

?

Duncan Murdoch



[Rd] as.Date.character suggestion
Duncan Murdoch