r - Why is rbindXts's dup parameter not exposed? -


i want rbind bunch of xts objects, should not overlap, if overlap don't want add row twice: choose 1 or other. (i duplicated(index(x)), delete them.)

(example code showing problem, , desired output, below).

poking around, found c source has dup parameter; defaults false , when set true behaviour wanted:

.external("rbindxts", dup = t, x,y,z, package = "xts") 

is there reason wasn't exposed in rbind() interface? (by "good" reason mean along lines of known buggy, or bad performance on large data, or that.) or more practical reason, such no-one has had time write tests , documentation yet?

update: went code, , found wasn't using rbind.xts, instead do.call.rbind() function described here: https://stackoverflow.com/a/9729804/841830 due memory issue in rbind.xts.

(i found own (!) question 3 years ago, describes how delete duplicates: how remove row zoo/xts object, given timestamp )

update #2:

do.call.rbind can modified use external call:

do.call.rbind.xts.no_dup <- function(lst) {   while(length(lst) > 1) {     idxlst <- seq(from=1, to=length(lst), by=2)     lst <- lapply(idxlst, function(i) {       if(i==length(lst)) { return(lst[[i]]) }       return(.external("rbindxts", dup = t, lst[[i]], lst[[i+1]], package = "xts"))     })   }   lst[[1]] } 

i tested same test data shown here: https://stackoverflow.com/a/12029366/841830, , has same performance, , produces same 2.8 million row xts object, do.call.rbind (which good). of course, test data has no duplicates, maybe not fair test?


x <- xts(1:10, sys.date()+1:10) y <- xts(50:55,sys.date() + (-1:-6)) z <- xts(20:25,sys.date() + (-2:+3)) rbind(x,y,z) 

this gives following output (with *** showing undesired lines)

2015-07-02   55 2015-07-03   54 2015-07-04   53 2015-07-05   52 2015-07-06   51 2015-07-06   20   *** 2015-07-07   50 2015-07-07   21   *** 2015-07-08   22 2015-07-09    1 2015-07-09   23   *** 2015-07-10    2 2015-07-10   24   *** 2015-07-11    3 2015-07-11   25   *** 2015-07-12    4 2015-07-13    5 2015-07-14    6 2015-07-15    7 2015-07-16    8 2015-07-17    9 2015-07-18   10 

whereas .external("rbindxts", dup = t, x,y,z, package = "xts") gives:

2015-07-02   55 2015-07-03   54 2015-07-04   53 2015-07-05   52 2015-07-06   51 2015-07-07   50 2015-07-08   22 2015-07-09    1 2015-07-10    2 2015-07-11    3 2015-07-12    4 2015-07-13    5 2015-07-14    6 2015-07-15    7 2015-07-16    8 2015-07-17    9 2015-07-18   10 

looking @ the commit added, seems experimental. it's not exposed practical reasons: it's untested/undocumented.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -