【发布时间】:2013-04-16 03:27:26
【问题描述】:
我正在尝试使用以下代码确定日期在矩阵中的位置:
#portret is a list of daily returns for three different stocks from 1980-01-01 to 2010-12
#13.These dates are listed in the first column of the portret data frame
library(quantmod)
library(FRAPO)
getSymbols(c("F","AA","IBM"),from="1980-01-01", to="2010-12-31")
port=cbind(F$F.Adjusted,AA$AA.Adjusted,IBM$IBM.Adjusted)
portret=returnseries(port,"discrete",trim=TRUE)
portret=data.frame(index(portret),coredata=portret)
date.list=seq.Date(as.Date("1990-10-01"),as.Date("2010-10-01"),by="month")
length(date.list)
#this equals 241
date.index=matrix(0,241,2)
for(i in 1:241){
date.index[i,]=which(portret[,1]==as.character(date.list[i]),arr.ind=TRUE)}
我不断收到此错误: 替换的长度为零
请指教。
【问题讨论】:
-
请查看更新后的代码。
-
在
i = 3失败。在portret[,1]中找不到as.character(date.list[3])。试试sum(portret[,1] == as.character(date.list[i]))。你会看到它是 0。不清楚你要做什么。您已经在 portret 中有日期。你想用 date.list 做什么? -
我明白了……我在为每个交易日解决 portret 的 minvar 端口所做的工作,我正在回顾并根据日期收集特定的月份值。所以我会有一排库存重量,我需要参考 portret 的日期。这可能不是解释它的最佳方式,但感谢您发现问题。
-
那将是完美的!谢谢你的提示。我是 R 新手,所以我不知道。