[R] as.Date() results depend on order of data within vector?

Mark Wardle mark at wardle.org
Sun Jan 7 13:01:32 CET 2007


Dear all,

The as.Date() function appears to give different results depending on
the order of the vector passed into it.

d1 = c("1900-01-01", "2007-01-01","","2001-05-03")
d2 = c("", "1900-01-01", "2007-01-01","2001-05-03")
as.Date(d1)	# gives correct results
as.Date(d2)	# fails with error (* see below)

This problem does not arise if the dates are NA rather than an empty
string, but my data is coming via RODBC and I still don't have NAs
passed across properly.

I might add that I initially noticed this behaviour when using RODBC's
sqlQuery() function call, and I initially had difficulty explaining why
one column of dates was passed correctly, but another failed. The
failing column was a "date of death" column where it was NA ("") for
most patients.

I've come up with two workarounds that work. The first is to sort the
data at the SQL level, ensuring the initial record is not null. The
second is to use sqlQuery() with as.is=T option, and then do the sorting
and conversion afterwards.

Is the behaviour of as.Date() shown above as expected/designed?

Many thanks,

Mark


(*) "Error in fromchar(x) : character string is not in a standard
unambiguous format"

sessionInfo():
R version 2.4.0 (2006-10-03) powerpc-apple-darwin8.7.0 locale:
C/en_GB.UTF-8/C/C/C/C
attached base packages:
[1] "methods"   "stats"     "graphics"  "grDevices" "utils"
"datasets" "base"

other attached packages:
rcompletion       RODBC
   "0.0-12"     "1.1-7"



More information about the R-help mailing list