我有两个带有股票回报的数据文件。我正在尝试对两者应用相同的功能,但我得到其中一个错误。我想找出导致错误的原因,因此我比较了两个xts对象的Indexed by objects of class: [POSIXct,POSIXt] TZ: # this object errors
Indexed by objects of class: [Date] TZ: GMT # this object works
输出,唯一不同的是:
str
有没有办法更改xts对象中日期的索引,以便Indexed by objects of class: [Date] TZ: GMT
的输出返回:seq(as.Date("1963/07/01"), as.Date("2004/12/01"), by = "1 month",tzone="GMT")
?
我使用library(xts)
library("PerformanceAnalytics")
load("https://dl.dropboxusercontent.com/u/22681355/data.Rdata")
data(edhec)
data2 <- as.xts(french1)
生成了日期。
可重现的例子:
Return.portfolio()
我要调用的函数是rebalance_on="months"
,其参数为Return.portfolio(edhec["1997",1:10],rebalance_on="months") #this works
Return.portfolio(data2["1976",1:10],rebalance_on="months") #this does not work
{{1}}
答案 0 :(得分:0)
xts:::as.xts.data.frame
假定您应将data.frame的rownames强制转换为POSIXct
对象/索引。如果要使用其他类,请通过dateFormat=
的{{1}}参数指定它。
as.xts
虽然我不相信这是你遇到的任何错误的原因,因为没有指定> data2 <- as.xts(french1, dateFormat="Date")
> str(data2)
An ‘xts’ object on 1963-06-30/2004-11-30 containing:
Data: num [1:498, 1:10] -0.47 4.87 -1.68 2.66 -1.13 2.83 0.79 1.85 3.08 -0.45 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:10] "NoDur" "Durbl" "Manuf" "Enrgy" ...
Indexed by objects of class: [Date] TZ: UTC
xts Attributes:
NULL
我没有收到错误。
dateFormat="Date"