[R-SIG-Finance] xts and Sys.time() - very stange behaviour
Jeff Ryan
jeff.a.ryan at gmail.com
Wed Aug 1 18:40:58 CEST 2012
Your example, while reproducible is anything but minimal.
Can you distill it to something without all the order/etc stuff so we
can properly see what might be happening. IIRC subsecond selection
isn't supported in some cases, but it is hard to find the time to
understand your code before even getting to the root of the issue.
Best,
Jeff
On Wed, Aug 1, 2012 at 11:22 AM, soren wilkening <me at censix.com> wrote:
> #I wasn't sure whether to post this to R.help, but since it involves xts() I
> thought I would start here.
> #I have attached a self explanatory code sample that does consistently
> reproduce the problem on my #system (and it is driving me crazy)
> #
> #The code will generate some data based on Sys.time(), perform a test and if
> it succeeds to reproduce the #problem, the loop will exit. Takes about 5
> seconds on my system. So if the loop runs for a long time on #your machine,
> your system is probably unaffected. you will have to interrupt it with
> ctrl+c
>
>
> require(xts)
>
> options(digits.secs=3)
>
> okok<-TRUE
>
> while(okok){
>
> initdate <- "2000-01-31 13:45:02.437" #some date
> ob <- xts(as.matrix(t(c(0, NA, "aaaaa", "bbbb", 0, "ccccc",
> as.character(as.POSIXct(initdate)), 1, 0))), order.by = as.POSIXct(initdate)
> )
>
>
> #get some timestamps, with subsecond accuracy truncated to microseconds
> t0 <- as.POSIXct( strftime(Sys.time(), "%Y-%m-%d %H:%M:%OS3") )
> Sys.sleep(0.3)
> t1 <- as.POSIXct( strftime(Sys.time(), "%Y-%m-%d %H:%M:%OS3") )
> Sys.sleep(0.7)
> t2 <- as.POSIXct( strftime(Sys.time(), "%Y-%m-%d %H:%M:%OS3") )
> Sys.sleep(0.2)
>
>
> # use the timestamps to add rows to the 'ob'
> order <- NULL
>
> ordertime1 <- t0 + 1e-3
> neworder <- xts(as.matrix(t(c(1, 2, 'aa', 'bb', 13.4, 'o', NA, NA, 0))),
> order.by = (ordertime1))
> if (is.null(order)) order <- neworder else order <- rbind(order, neworder)
>
> ordertime2 <- t1 + 1e-3
> neworder <- xts(as.matrix(t(c(2, 2, 'aa', 'bb', 13.4, 'o', NA, NA, 0))),
> order.by = (ordertime2))
> if (is.null(order)) order <- neworder else order <- rbind(order, neworder)
>
> ordertime3 <- t2 + 1e-3
> neworder <- xts(as.matrix(t(c(3, 2, 'aa', 'bb', 13.4, 'o', NA, NA, 0))),
> order.by = (ordertime3))
> if (is.null(order)) order <- neworder else order <- rbind(order, neworder)
> tmpneworder <- neworder
>
> ob <- rbind(ob,order)
>
> key <- as.character(index(tmpneworder))
>
> okok<- nrow( ob[ key ] ) == 1 # does access work ?
> }
>
> print(ob)
> print(paste('problem: ob[\'',key,'\'] is empty, but should not be
> !!',sep=''))
>
> # ob should have 4 rows and each should be accessible by using the
> timestamp, i.e.: ob['2012-08-01 18:08:39.298'] or similar. But for some
> reason this wont work for the last row !!! ????
> #
> #Thanks for some help
> # Soren
>
>
>
> -----
> http://censix.com
> --
> View this message in context: http://r.789695.n4.nabble.com/xts-and-Sys-time-very-stange-behaviour-tp4638714.html
> Sent from the Rmetrics mailing list archive at Nabble.com.
>
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.
--
Jeffrey Ryan
jeffrey.ryan at lemnica.com
www.lemnica.com
More information about the R-SIG-Finance
mailing list