Skip to content

strange behaviour of "POSIXlt" "POSIXt" object

8 messages · ikuzar, michael.weylandt at gmail.com (R. Michael Weylandt, Curt Seeliger +3 more

#
Hi, 
Does anybody know why get I this kind of strange situation:

Browse[2]> hcEnd
[1] "2009-03-29 06:30:00"
Browse[2]> class(hcEnd)
[1] "POSIXlt" "POSIXt" 
Browse[2]> is.na(hcEnd)
[1] TRUE

This issue is the source of my all issues in my program, 

Thanks for your help

--
View this message in context: http://r.789695.n4.nabble.com/strange-behaviour-of-POSIXlt-POSIXt-object-tp4418115p4418115.html
Sent from the R help mailing list archive at Nabble.com.
Can you dput(hcEnd) and give a snippet of the code that generates it?

Michael
On Feb 24, 2012, at 12:57 PM, ikuzar <razuki at hotmail.fr> wrote:

            
2 days later
#
Hi, 

I do not know what part of my code should I post here (I use large size of
data, the loop "for" contains many lines). The situation is difficult to
post here, but I hope these lines would be useful for help:

hcEndDateTmp = userDateStart
  if((hcStartTime<="23:59") & (hcEndTime >= "00:00")){
    hcEndDateTmp$mday = userDateStart$mday + 1
  }
  hcEndDate = strftime(hcEndDateTmp, "%Y-%m-%d")
  hcStart = ""
hcEnd = as.POSIXlt(paste(hcEndDate, hcEndTime))

for(rowNum in 1:nbJour){
    ...
    hcStart = as.POSIXlt(ecs$startAt[[rowNum]])
    ecsInterval2 =
datePower[(datePower$DateTime>=hcStart)&(datePower$DateTime<=hcEnd), ]
    ...
   hcEnd$mday = hcEnd$mday + 1
  cat("DEBUG: rowNum=", rowNum, "is.na(hcEnd)=", is.na(hcEnd), "\n")
}

the two last lines are very important. It yields:

DEBUG: rowNum= 1 is.na(hcEnd)= FALSE 
DEBUG: rowNum= 2 is.na(hcEnd)= FALSE 
DEBUG: rowNum= 3 is.na(hcEnd)= FALSE 
DEBUG: rowNum= 4 is.na(hcEnd)= FALSE 
DEBUG: rowNum= 5 is.na(hcEnd)= FALSE 
DEBUG: rowNum= 6 is.na(hcEnd)= FALSE 
DEBUG: rowNum= 7 is.na(hcEnd)= TRUE 

Browse[1]> hcEnd
[1] "2009-03-29 06:30:00"
Browse[1]> class(hcEnd)
[1] "POSIXlt" "POSIXt" 

So, At the end of 7th iteration, hcEnd becomes NA (I guess because of
hcEnd$mday = hcEnd$mday + 1 ?!?). But It remains strange because the class
of hcEnd is here "POSIXlt" "POSIXt" (it should be "logical".!! Am I
wrong???)

Here is the version of R:
platform       i386-pc-mingw32              
arch           i386                         
os             mingw32                      
system         i386, mingw32                
status                                      
major          2                            
minor          13.2                         
year           2011                         
month          09                           
day            30                           
svn rev        57111                        
language       R                            
version.string R version 2.13.2 (2011-09-30)

thanks for your help

--
View this message in context: http://r.789695.n4.nabble.com/strange-behaviour-of-POSIXlt-POSIXt-object-tp4418115p4424214.html
Sent from the R help mailing list archive at Nabble.com.
#
is.na(POSIXltObject) can behave oddly if you manipulate
the fields of the POSIXlt object directly so as to
cause illegal combinations of values.  E.g., the 35th
of February, 2009, is not considered an NA but the 36th
and above are:

  > z <- as.POSIXlt("2009-02-25 06:30:00")
  > for(i in 1:20){ z$mday <- z$mday + 1L ; cat(is.na(z), ": ");print(z)}
  FALSE : [1] "2009-02-26 06:30:00"
  FALSE : [1] "2009-02-27 06:30:00"
  FALSE : [1] "2009-02-28 06:30:00"
  FALSE : [1] "2009-03-01 06:30:00"
  FALSE : [1] "2009-03-02 06:30:00"
  FALSE : [1] "2009-03-03 06:30:00"
  FALSE : [1] "2009-03-04 06:30:00"
  FALSE : [1] "2009-03-05 06:30:00"
  FALSE : [1] "2009-03-06 06:30:00"
  FALSE : [1] "2009-03-07 06:30:00"
  TRUE : [1] "2009-03-08 06:30:00"
  TRUE : [1] "2009-03-09 06:30:00"
  TRUE : [1] "2009-03-10 06:30:00"
  TRUE : [1] "2009-03-11 06:30:00"
  TRUE : [1] "2009-03-12 06:30:00"
  TRUE : [1] "2009-03-13 06:30:00"
  TRUE : [1] "2009-03-14 06:30:00"
  TRUE : [1] "2009-03-15 06:30:00"
  TRUE : [1] "2009-03-16 06:30:00"
  TRUE : [1] "2009-03-17 06:30:00"

The print routine does not seem to consult is.na().

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
#
Hadley's lubridate package might be of some help to you.

Michael
On Mon, Feb 27, 2012 at 11:40 AM, ikuzar <razuki at hotmail.fr> wrote: