我收到了一篇论文,其中包括了R文件的经验结果。但是,尝试运行其代码时遇到一些问题:
data <- vni$R[198:length(vni$R)]; date <- vni$Date[198:length(vni$R)]
l <- length(data)
rw_length <- 52 # 52 weeks (~ 1 year)
bound <- vector()
avr <- vector()
for (i in (rw_length+1):l) {
AVR.test <- AutoBoot.test(data[(i-rw_length):i],nboot=2000,"Normal",c(0.025, 0.975))
bound <- append(bound, AVR.test$CI.stat)
avr <- append(avr, AVR.test$test.stat)
}
lower <- bound[seq(1, length(bound), 2)]
upper <- bound[seq(2, length(bound), 2)]
results <- matrix(c(date[(rw_length+1):l],data[(rw_length+1):l],avr,upper, lower),ncol=5, dimnames = list(c(),c("Date", "Return", "AVR", "Upper", "Lower")))
然后出现以下错误:`
as.Date.numeric(e)中的错误:必须提供'origin'`
results <- matrix(c(date[(rw_length+1):l],data[(rw_length+1):l],avr,upper, lower),ncol=5, dimnames = list(c(),c("Date", "Return", "AVR", "Upper", "Lower")))
我的数据集是:
Date P R
1 2001-03-23 259.60 0.0000000000
2 2001-03-30 269.30 0.0366840150
3 2001-04-06 284.69 0.0555748690
4 2001-04-13 300.36 0.0535808860
5 2001-04-20 317.76 0.0563146260
...
935 2019-02-15 950.89 0.0454163960
936 2019-02-22 988.91 0.0392049380
937 2019-03-01 979.63 -0.0094283770
您能帮我解决这个问题吗? 非常感谢!
答案 0 :(得分:0)
matrix
中的所有内容都必须是同一类。当数字中有一个字符串时,通常会发现这种情况,其中
m <- matrix(0, nr=2, nc=2)
m
# [,1] [,2]
# [1,] 0 0
# [2,] 0 0
m[1] <- "a"
m
# [,1] [,2]
# [1,] "a" "0"
# [2,] "0" "0"
在这种情况下,您有Date
(第一列)和numeric
(所有其他?不知道AutoBoot
是什么)。而且由于它试图将复杂程度从最低复杂度强制到最高复杂度(从numeric
到Date
),因此非Date
对象正在转换。
matrix(c(Sys.Date(), 1.1))
# Error in as.Date.numeric(e) : 'origin' must be supplied
我建议尝试将其存储在matrix
中从根本上来说是有缺陷的。如果要在数字之间存储Date
对象,则有两个选择:
data.frame
,其中每一列可以有自己的类。"Date"
数据预先转换为numeric
并将其存储为数字。这意味着如果/当您再次需要将日期设为Date
类的日期时,则需要as.Date(..., origin="1970-01-01")
。