Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 更改xts对象日期索引_R_Date_Xts_Portfolio - Fatal编程技术网

R 更改xts对象日期索引

R 更改xts对象日期索引,r,date,xts,portfolio,R,Date,Xts,Portfolio,我有两个股票回报的数据文件。我试图对这两个应用相同的函数,但其中一个出现了错误。我想找出导致错误的原因,所以我比较了两个xts对象的str输出,唯一不同的一行是: Indexed by objects of class: [POSIXct,POSIXt] TZ: # this object errors Indexed by objects of class: [Date] TZ: GMT # this object works 是否有方法更改xts对象中日期的索引,以便str的输

我有两个股票回报的数据文件。我试图对这两个应用相同的函数,但其中一个出现了错误。我想找出导致错误的原因,所以我比较了两个xts对象的
str
输出,唯一不同的一行是:

Indexed by objects of class: [POSIXct,POSIXt] TZ: # this object errors
Indexed by objects of class: [Date] TZ: GMT       # this object works
是否有方法更改xts对象中日期的索引,以便
str
的输出返回:
由类:[Date]TZ:GMT
的对象索引

我使用以下方法生成日期:
seq(as.Date(“1963/07/01”)、as.Date(“2004/12/01”)、by=“1个月”、tzone=“GMT”)

一个可重复的例子:

library(xts)
library("PerformanceAnalytics")
load("https://dl.dropboxusercontent.com/u/22681355/data.Rdata")
data(edhec)
data2 <- as.xts(french1)

xts:::as.xts.data.frame
默认情况下,假定data.frame的行名应强制为
POSIXct
对象/索引。如果要使用其他类,请通过
dateFormat=
参数将其指定为
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

xts:::as.xts.data.frame
默认情况下,假定data.frame的行名应强制为
POSIXct
对象/索引。如果要使用其他类,请通过
dateFormat=
参数将其指定为
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

您能否提供一个和抛出错误的函数?如果你不能提供抛出错误的函数,你能至少告诉我们错误是什么吗?您当前的问题假设您知道错误的原因,这可能是错误的假设。请参阅我的编辑。现在有一个完整的可复制示例。通常,
函数返回逻辑,而
是作为
函数强制对象。您的示例只有在可以运行代码的意义上才是可复制的。问题的顶部是
str()
输出的两个片段,但不清楚检查了哪些对象。当您打算将
编写为.xts
时,您可能编写了
is.xts
,但对于该
seq.Date()
结果,您可能会做哪些进一步的处理仍然是个谜。您能提供一个和抛出错误的函数吗?如果你不能提供抛出错误的函数,你能至少告诉我们错误是什么吗?您当前的问题假设您知道错误的原因,这可能是错误的假设。请参阅我的编辑。现在有一个完整的可复制示例。通常,
函数返回逻辑,而
是作为
函数强制对象。您的示例只有在可以运行代码的意义上才是可复制的。问题的顶部是
str()
输出的两个片段,但不清楚检查了哪些对象。当您打算将
as.xts
写入时,您可能编写了
is.xts
,但对于该
seq.Date()
result.奇怪的是,如果没有as.xts()中的Date参数,则在添加dateformat=“Date”之后会出现错误它运行时没有错误。奇怪的是,如果没有as.xts()中的date参数,我会得到一个错误,但在添加dateformat=“date”后,它运行时没有错误。
> data2 <- as.xts(french1)
> Return.portfolio(data2["1976",1:10],rebalance_on="months")
           portfolio.returns
1976-01-31         0.3980000
1976-02-29         0.1017811
1976-03-31         1.3408273
1976-04-30       -11.7395151
1976-05-31         8.0197492
1976-06-30        -0.2550812
1976-07-31         2.5732207
1976-08-31         1.3784635
1976-09-30        -1.6859705
1976-10-31       -21.4958124
1976-11-30         5.6863828
1976-12-31        -7.8071966
Warning message:
In Return.portfolio(data2["1976", 1:10], rebalance_on = "months") :
  weighting vector is null, calulating an equal weighted portfolio