Quantmod中的错误,日内汇率为R

Quantmod中的错误,日内汇率为R,r,time-series,quantmod,R,Time Series,Quantmod,我在处理外汇汇率的小时数据时遇到问题。我通过以下方式读取了csv文件: csv文件,如: Date,Open,High,Low,Close,Volume 2011-08-11 03:00:00,1.41758,1.42205,1.41625,1.42174,8974 ... 2011-08-12 04:00:00,1.42175,1.42413,1.42067,1.42172,7229 ... 2011-12-30 05:00:00,1.42173,1.42341,1.42

我在处理外汇汇率的小时数据时遇到问题。我通过以下方式读取了csv文件:

csv文件,如:

 Date,Open,High,Low,Close,Volume

 2011-08-11 03:00:00,1.41758,1.42205,1.41625,1.42174,8974 

 ...

 2011-08-12 04:00:00,1.42175,1.42413,1.42067,1.42172,7229

 ...

2011-12-30 05:00:00,1.42173,1.42341,1.42062,1.42171,6703

... 


raw<- read.delim2("~/R/Data/EURUSD60.csv",header=TRUE,sep=",") 

 stripday<-strptime(raw$DATE,format="%Y%m%d") 
 fxdata<-data.frame(stripday,raw) 

 write.table(fxdata,"~/R/Data/EURUSD60.csv",quote=FALSE,sep=",",row.names=FALSE) 

 EURUSD<-as.xts(read.zoo("~/R/Data/EURUSD60.csv",sep=",",format="%Y-%m-%d %R",tz="GMT",header=T))
日期、开盘、高位、低位、收盘、成交量
2011-08-11 03:00:00,1.41758,1.42205,1.41625,1.42174,8974 
...
2011-08-12 04:00:00,1.42175,1.42413,1.42067,1.42172,7229
...
2011-12-30 05:00:00,1.42173,1.42341,1.42062,1.42171,6703
... 

原始问题在于model.data函数,请尝试以下操作:

f3 <- function(...) as.POSIXct(paste(...), format = "%Y-%m-%d %H:%M")


    My_modelData <- function(x, data.window = NULL, exclude.training = FALSE)
{
  model.data <- x@model.data
  if (!is.null(data.window)) {
    if (length(data.window) > 2) {
      model.data <- model.data[index(model.data) %in% data.window]
    }
    else {
      start.date.index <- index(model.data[which(index(model.data) >=f3(data.window[1]))])
      end.date.index <- index(model.data[which(index(model.data) <= f3(data.window[2]))])
      date.range <- intersect(start.date.index, end.date.index)
      model.data <- model.data[as.POSIXct(date.range, origin="1970-01-01")]
    }
  }
  if (exclude.training == TRUE) {
    model.data <- model.data[!index(model.data) %in% x@model.data]
  }
  return(model.data)
} 

f3我想你应该把这个贴在StackOverflow上。我注意到你把这个代码一字不差地删掉了。你为什么不问问作者?嗨,我确实问过作者这个问题,但他所做的是使用每日费率。我改为按小时收费。该代码在处理每日费率时确实可以正常工作,但在处理小时费率时会出现此错误。我认为这将是一个关于quantmod或索引的更一般的问题。
 Tdata.train <- as.data.frame(modelData(data.model, 
 data.window=c('2011-08-03','2011-12-30'))) 
 Warnings: 
 1: In which(index(model.data) >= as.Date(data.window[1], origin = "1970-01-01")) :
 incopatible methods ("Ops.POSIXt", "Ops.Date") für ">=" 
 2: In which(index(model.data) <= as.Date(data.window[2], origin = "1970-01-01")) :
 incopatible methods ("Ops.POSIXt", "Ops.Date") für "<=" 
 3: In max(i) : kein nicht-fehlendes Argument für max; gebe -Inf zurück 
f3 <- function(...) as.POSIXct(paste(...), format = "%Y-%m-%d %H:%M")


    My_modelData <- function(x, data.window = NULL, exclude.training = FALSE)
{
  model.data <- x@model.data
  if (!is.null(data.window)) {
    if (length(data.window) > 2) {
      model.data <- model.data[index(model.data) %in% data.window]
    }
    else {
      start.date.index <- index(model.data[which(index(model.data) >=f3(data.window[1]))])
      end.date.index <- index(model.data[which(index(model.data) <= f3(data.window[2]))])
      date.range <- intersect(start.date.index, end.date.index)
      model.data <- model.data[as.POSIXct(date.range, origin="1970-01-01")]
    }
  }
  if (exclude.training == TRUE) {
    model.data <- model.data[!index(model.data) %in% x@model.data]
  }
  return(model.data)
}