That looks correct (If it is applied to a POSIXct vector). As I said in the comment, POSIXlt formatted columns are actually lists and will give you strange error reports if you attempt operations on them. Try this:
dtime <- as.POSICct(SubDateTime$DateTime)
at <- format(SubDateTime$DateTime, "%H") %in% c("00", "06", "12", "18")
axis(side = 1,at = SubDateTime$DateTime[at],
labels = format(SubDateTime$DateTime[at], "%a-%H"))
Contrast with:
dtime <- seq(as.POSIXct("2013-06-01 00:00:00") ,
as.POSIXct("2013-06-02 00:00:00"), by="5 min")
dtime.lt <- as.POSIXlt(dtime)
at <- format(dtime.lt, "%H") %in% c("00", "06", "12", "18")
axis(side = 1,at = dtime.lt[at],
labels = format(dtime.lt[at], "%a-%H"))
Error in axis(side = 1, at = dtime.lt[at], labels = format(dtime.lt[at], :
(list) object cannot be coerced to type 'double'