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 

> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On 
> Behalf Of ikuzar
> Sent: Monday, February 27, 2012 2:41 AM
> To: r-help@r-project.org
> Subject: Re: [R] strange behaviour of "POSIXlt" "POSIXt" object
> 
> 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.
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to