Why does iterating through a Date
or POSIXct
object result in numeric
? For example:
test = as.Date("2009-01-01") print( class( test ) ) # [1] "Date" for ( day in test ) { print( class( day ) ) } # [1] "numeric"
The same thing happens with POSIXct
:
test = as.POSIXct("2009-01-01") print( class( test ) ) # [1] "POSIXct" "POSIXt" for ( day in test ) { print( class( day ) ) } # [1] "numeric"
?"for"
says that seq
(the part after in
) is "[A]n expression evaluating to a vector (including a list and an expression) or to a pairlist or 'NULL'".
So your Date
vector is being coerced to numeric
because Date
objects aren't strictly vectors:
is.vector(Sys.Date()) # [1] FALSE is.vector(as.numeric(Sys.Date())) # [1] TRUE
The same is true for POSIXct
vectors:
is.vector(Sys.time()) # [1] FALSE is.vector(as.numeric(Sys.time())) # [1] TRUE
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With