从 xts 0.9.7 更新到 0.10.0 时 Xts 转换失败
Xts conversion fails on update from xts 0.9.7 to 0.10.0
从 xts 0.9.7 更新到 0.10.0 时,Dataframe 到 xts 的转换失败。
#THIS WORKS (uses xts 0.9.7):
library(xts)
DFX <- structure(list(DateTime = structure(list(sec = c(0, 0, 0), min = c(10L, 0L, 5L), hour = c(17L, 18L, 18L), mday = c(24L, 24L, 24L), mon = c(5L, 5L, 5L), year = c(114L, 114L, 114L), wday = c(2L, 2L, 2L), yday = c(174L, 174L, 174L), isdst = c(1L, 1L, 1L), zone = c("EDT", "EDT", "EDT"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Open = c(125.03, 125.34, 125.85)), .Names = c("DateTime", "Open"), class = "data.frame", row.names = 558:560)
DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime)
#THIS DOESN'T WORK (uses xts 0.10.1):
install.packages("devtools")
require(devtools)
install_github("joshuaulrich/xts")
library(xts)
DFX <- structure(list(DateTime = structure(list(sec = c(0, 0, 0), min = c(10L, 0L, 5L), hour = c(17L, 18L, 18L), mday = c(24L, 24L, 24L), mon = c(5L, 5L, 5L), year = c(114L, 114L, 114L), wday = c(2L, 2L, 2L), yday = c(174L, 174L, 174L), isdst = c(1L, 1L, 1L), zone = c("EDT", "EDT", "EDT"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Open = c(125.03, 125.34, 125.85)), .Names = c("DateTime", "Open"), class = "data.frame", row.names = 558:560)
DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime)
#Error message:
#Error in .Call("do_is_ordered", x = x, increasing = as.logical(increasing), :
# "do_is_ordered" not available for .Call() for package "xts"
猜测 xts 0.10.0 不是一个完成的版本。然而我更新到 0.10.0 因为 quantstrat 包需要 blotter 包,它需要 xts 0.10.0。我需要这个来将一个刻度数据数据帧变成一个 xts 对象,到 运行 它上面的一个 quantstrat 策略(需要 xts 对象)。
这是您的 R 会话的问题,而不是 xts。我假设您是 运行 Windows 上的 RStudio,如果您尝试更新时任何 R 会话当前正在使用该包,则包未正确更新。
解决方案是关闭所有 运行 R 会话,然后从 GitHub.
安装 xts
完成后,您还需要将调用更改为 as.xts
,因为 xts 对象不喜欢 POSIXlt
索引(因为它们是时间组件的列表,而不是时间组件的数量从纪元开始的秒数,例如 POSIXct
).
R> DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime)
Error in is.finite(order.by) :
default method not implemented for type 'list'
我将打开一个问题来修复错误。它应该像在 as.xts
调用中将 POSIXlt
对象转换为 POSIXct
一样简单。
从 xts 0.9.7 更新到 0.10.0 时,Dataframe 到 xts 的转换失败。
#THIS WORKS (uses xts 0.9.7):
library(xts)
DFX <- structure(list(DateTime = structure(list(sec = c(0, 0, 0), min = c(10L, 0L, 5L), hour = c(17L, 18L, 18L), mday = c(24L, 24L, 24L), mon = c(5L, 5L, 5L), year = c(114L, 114L, 114L), wday = c(2L, 2L, 2L), yday = c(174L, 174L, 174L), isdst = c(1L, 1L, 1L), zone = c("EDT", "EDT", "EDT"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Open = c(125.03, 125.34, 125.85)), .Names = c("DateTime", "Open"), class = "data.frame", row.names = 558:560)
DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime)
#THIS DOESN'T WORK (uses xts 0.10.1):
install.packages("devtools")
require(devtools)
install_github("joshuaulrich/xts")
library(xts)
DFX <- structure(list(DateTime = structure(list(sec = c(0, 0, 0), min = c(10L, 0L, 5L), hour = c(17L, 18L, 18L), mday = c(24L, 24L, 24L), mon = c(5L, 5L, 5L), year = c(114L, 114L, 114L), wday = c(2L, 2L, 2L), yday = c(174L, 174L, 174L), isdst = c(1L, 1L, 1L), zone = c("EDT", "EDT", "EDT"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Open = c(125.03, 125.34, 125.85)), .Names = c("DateTime", "Open"), class = "data.frame", row.names = 558:560)
DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime)
#Error message:
#Error in .Call("do_is_ordered", x = x, increasing = as.logical(increasing), :
# "do_is_ordered" not available for .Call() for package "xts"
猜测 xts 0.10.0 不是一个完成的版本。然而我更新到 0.10.0 因为 quantstrat 包需要 blotter 包,它需要 xts 0.10.0。我需要这个来将一个刻度数据数据帧变成一个 xts 对象,到 运行 它上面的一个 quantstrat 策略(需要 xts 对象)。
这是您的 R 会话的问题,而不是 xts。我假设您是 运行 Windows 上的 RStudio,如果您尝试更新时任何 R 会话当前正在使用该包,则包未正确更新。
解决方案是关闭所有 运行 R 会话,然后从 GitHub.
安装 xts完成后,您还需要将调用更改为 as.xts
,因为 xts 对象不喜欢 POSIXlt
索引(因为它们是时间组件的列表,而不是时间组件的数量从纪元开始的秒数,例如 POSIXct
).
R> DFX <- as.xts(DFX[, -1], order.by = DFX$DateTime)
Error in is.finite(order.by) :
default method not implemented for type 'list'
我将打开一个问题来修复错误。它应该像在 as.xts
调用中将 POSIXlt
对象转换为 POSIXct
一样简单。