我有一个xts列表对象,我试图将我的列表中的日期放在一个向量中,然后在后续处理中用作xts索引。虽然我的数据包含时间戳,但为了便于说明,我将从谷歌中提取YHOO数据。此数据没有时间戳日期的时间元素,但它足够好。您需要quantmod
。我提取数据,然后创建一个列表,使用以下代码将YHOO划分为每周子组件:
library(quantmod)
library(xts)
getSymbols("YHOO",src="google")
yhooL <- split.xts(YHOO,"weeks")
要从第一段yhooL获取日期,我会传递此代码:
strptime(index(yhooL[[1]][1]),format="%Y-%m-%d")
按预期工作,我得到了约会。但是要使用vapply
strptime()
从每周的第一行获取所有日期,将返回其所有11个元素$ sec,$ min ... days,一年中的一周。它没有按照我提供的格式给出日期。我想要实现的是从该特定格式的第一行返回日期。我不确定传递给vapply()
vapply(yhooL, function(i) {strptime(index(i[1,]), format ="%Y-%m-%d")},double(1))
我还为POSIXct(1)
和其他一些人试过FUN.VALUE
,真的没有运气猜测。
答案 0 :(得分:1)
这是因为strptime
返回一个POSIXlt
对象,这非常复杂。最好使用lapply
选择索引,然后使用do.call将它们组合起来。您还可以通过这种方式设置最终对象的类,例如使用as.Date
。
x <- do.call(c,lapply(yhooL, function(i) as.Date(index(i)[1])))
summary(x)
Min. 1st Qu. Median Mean 3rd Qu. Max.
"2007-01-03" "2009-04-02" "2011-07-05" "2011-07-04" "2013-10-03" "2016-01-04"
class(x)
[1] "Date"