CRAN Release 0.13.1
-
Ignore attribute order in
all.equal()
. Attribute order shouldn't matter. That can be checked withidentical()
. -
Add instructions to update old objects. Old xts objects do not have tclass and tzone attributes on the index. Add a function to update the object attributes and add a note to the warning to show how to use it. Also, only call
tzone()
andtclass()
once incheck.TZ()
. Calling these functions multiple times throws multiple warnings for xts objects created before the tclass and tzone were attached to the index instead of the xts object. (#306) -
Return 'POSIXct' if object has no 'tclass'. An empty string is not a valid 'tclass', so it can cause an error.
-
Add notes on
plot.xts()
nomenclature and structure. Also add ASCII art to illustrate definitions and layout. (#103) -
Register missing S3 methods and update signatures. With R-devel (83995-ish),
R CMD check
notes these S3 methods are not registered. It also notes that the signatures foras.POSIXct.tis()
andstr.replot_xts()
do not match the respective generics.R CMD check
also thinkstime.frequency()
is a S3 method becausetime()
is a generic. The function isn't exported, so renaming won't break any external code. Thanks to Kurt Hornik for the report. Issues with functionality for 'tis' were also identified. I removed 'tis' support entirely because the implementation was not even a bare minimum, and it's not clear it even worked correctly. (#398) -
Format each column individually before printing. The top/bottom rows could have a different number of decimal places and there are often multiple variying spaces between columns. For example:
close volume ma 2022-01-03 09:31:00 476.470 803961.000 NA 2022-01-03 09:32:00 476.700 179476.000 NA 2022-01-03 09:33:00 476.540 197919.000 NA ... 2023-03-16 14:52:00 394.6000 46728.0000 392.8636 2023-03-16 14:53:00 394.6500 64648.0000 392.8755 2023-03-16 14:54:00 394.6500 69900.0000 392.8873
There are 4 spaces between the index and the 'close' column, 2 between 'close' and 'volume', and 4 between 'volume' and 'ma'. There should be a consistent number of spaces between the columns. Most other classes of objects print with 1 space between the columns. The top rows have 3 decimals and the bottom rows have 4. These should also be the same. (#321)
-
Only convert printed index values to character. Converting the entire index to character is time-consuming for xts objects with many observations. It can take more than a second to print an xts object with 1mm observations.
-
Make column names based on number of columns. The original code was a lot more complicated because it tried to account for truncating the number of printed columns. That functionality was removed because of how complicated it was. So now we can simply create printed column names from the number of columns. (#395)
-
Fix
xts()
for zero-row data.frame. Thexts()
constructor would create an object with a list for coredata when 'x' is a data.frame with no rows. It needs to convert 'x' to a matrix and throw an error if 'x' is a list. (#394) -
Reduce instances when
dplyr::lag()
warning is shown. The warning was shown whenever it detected dplyr is installed, even if the user wasn't actively using dplyr. That caused an excessive amount of noise when other packages attached xts (e.g. quantmod). Thanks to Duncan Murdoch for the report and suggested fix! (#393) -
Keep colname when only one non-time-based column. The subset
x[, -which.col]
would return a vector when the data frame has a time-based column and only one additional column. Do not drop dimensions, so 'x' will still be a data.frame in this case. (#391) -
Treat NA the same as NULL for start or end values. NULL represents an undefined index value. NA represents an unknown or missing index value. xts does not allow NA as index values. Subsetting an xts or zoo object by NA returns a zero-length object. So a NA (unknown) index value is essentially the same as an undefined index value. (#383, #345)
-
Warn and remove NA when
periodicity()
called on date-time with NA. Otherwise the uninformative error below will be thrown. (#289)Error in try.xts(x, error = "'x' needs to be timeBased or xtsible") : 'x' needs to be timeBased or xtsible
-
Account for TZ when making names for
split.xts()
.as.yearmon.POSIXct()
always setstz = "GMT"
when callingas.POSIXlt()
, regardless of the xts' index tzone. That can cause theas.yearmon()
results to be different days for GMT and the index's timezone. Useformat.POSIXct()
for "months" because it checks for a 'tzone' attribute before converting to POSIXlt and callingformat.POSIXlt()
. The conversion to POSIXlt is important because it checks and uses the 'tzone' attribute before considering the 'tz' argument. So it effectively ignores thetz = "GMT"
setting inas.yearmon()
. This is also the reason for callingas.POSIXlt()
before callingas.yearqtr()
. (#392)