-
-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem with indexing after change of indexing type #311
Comments
Thanks for the report! I see that you're using xts_0.11-2. Can you please try the current development version 0.12.0 and report back? |
Joshua, I tried as you said other attached packages:
[1] xts_0.12-0 zoo_1.8-6 but still the same problem... > test2 <- convertIndex(test, "Date")
> tclass(test2)
[1] "Date"
> test2["2014-01-01"]
[,1]
2014-01-01 0.5057137
> index(test2["2014-01-01"])
[1] "2014-01-01"
> test2[index(test2["2014-01-01"])] # What???!!! Empty!!!
[,1] |
Thanks for checking! I investigated and found the cause is that all.equal(.index(test), .index(test2), check.attributes=FALSE)
# [1] TRUE We've discussed internally in the past whether or not changing the |
Joshua, indeed that's what I suspected. Thanks for looking into it. IMHO, I think this choice is very misleading and prone to errors. I don't see the point of changing the type of index without actually changing the indices. So if you ask me, I would either totally change the indices or deprecate this wrapper. But that's my opinion. Thanks! |
I'm going to make this change and do reverse dependency checks to see what, if anything, breaks. I think the only time the actual underlying index values would change is when the 'tclass' changes from one with a timezone to one without a timezone. Part of the change will be a warning any time the 'tclass' changes from one with a timezone to one without a timezone (with an option to always suppress the warning). This should help users identify bugs and hopefully cause failing reverse dependency checks if other package authors have done it. |
# xts 0.14.x (202x-xx-xx) * `plot.xts()` now renders all panels when 'x' has more than 8 columns and `multi.panel = TRUE`. Columns 9 and later didn't render because the default of `plot.xts()` is 'col = 1:8'. Thanks to Ethan Smith for the report and patch. ([#423](joshuaulrich/xts#423)) ([#424](joshuaulrich/xts#424)) * `plot.xts()` no longer errors when 'ylim' is constant and negative. Thanks to Ethan Smith for the report. ([#422](joshuaulrich/xts#422)) * Do not use `SET_TYPEOF()` in C because it is not part of the public R API. * `merge.xts()` no longer converts 'x' or 'y' from double to integer in the C code when they are not used in the result. This avoids an unnecessary and confusing warning. Thanks to Jeff Ryan for the report. # xts 0.14.0 (2024-06-05) * `addEventLines()` and `addLegend()` now draw on multiple panels when `on` is a vector. Thanks to Ethan Smith for the report. ([#420](joshuaulrich/xts#420)) * Replace `SET_TYPEOF()` in merge.c because it will error when it tries to convert a REAL to an INTEGER. Thanks to Kurt Hornik for the report! ([#419](joshuaulrich/xts#419)) * Fix crash when 'j' is not an integer and in [0, 1) (e.g. `j = 0.1`). Also throw a warning when 'j' is not an integer. ([#413](joshuaulrich/xts#413)) ([#415](joshuaulrich/xts#415)) * Fix plot header when `layout()` is used to draw multiple plots on a single device. Thanks to Dirk Eddelbuettel for the report and testing! ([#412](joshuaulrich/xts#412)) * Fix plot legend location when the y-axis is log scale. ([#407](joshuaulrich/xts#407)) # xts 0.13.2 (2024-01-21) * Print a message when `period.apply()` is called with `FUN = mean` because it calculates the mean for each column, not all the data in the subset like it does for all other functions. The message says to use `FUN = colMeans` for current behavior and `FUN = function(x) mean(x)` to calculate the mean for all the data. This information is also included in the help files. The option `xts.message.period.apply.mean = FALSE` suppresses the message. ([#124](joshuaulrich/xts#124)) * Fix error when `print.xts()` is called 'quote' or 'right' arguments. ([#401](joshuaulrich/xts#401)) * Fix `addPolygon()` so it renders when `observation.based = TRUE`. ([#403](joshuaulrich/xts#403)) * Print trailing zeros for index value with fractional seconds, so every index value has the same number of characters. ([#404](joshuaulrich/xts#404)) * Add ability to log scale the y-axis in `plot.xts()`. ([#103](joshuaulrich/xts#103)) * Actually change the underlying index values when 'tclass' is changed from a class with a timezone (e.g. POSIXct) to one without a timezone (e.g. Date). Add a warning when this happens, with a global option to always suppress the warning. ([#311](joshuaulrich/xts#311)). * Significantly refactor the internals of `plot.xts()`. ([#408](joshuaulrich/xts#408))
Description
One of the great advantages of
xts
is its flexibility in indexing the observations with dates and so. However, I found a strange behaviour after I change the indexing type of thexts
which IMHO should not happen.Minimal, reproducible example
Let's start with a toy xts and some indexing which works fine:
Now, let's change the index type from POSIXct to Date and we will get the weird behaviour:
Obviously, had I created the xts originally with Date, then there would be no problem:
Therefore, the problem comes from the change of type of index, but I don't think this should happen...
Session Info
The text was updated successfully, but these errors were encountered: