从 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包需要吸墨器包,它需要 xts 0.10.0。我需要它来将刻度数据数据框转换为 xts 对象,以在其上运行 quantstrat 策略(需要 xts 对象)。