strptime() 在匿名函数中的行为与我预期的不同
strptime() behaving differently in an anonymous function than I expected
我有一个 xts 列表对象,我正在尝试获取列表中的日期,然后将其放入一个向量中,后者用作进一步处理中的 xts 索引。虽然我的数据包含时间戳,但出于此说明的目的,我从 google 中提取 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()
return 的所有十一个元素 $sec, $min...days, week of year 来获取每周第一行的所有日期。它没有按照我提供的格式给我日期。我想要实现的是 return 从该特定格式的第一行开始的日期。我不确定要传递给 vapply()
的参数 FUN.VALUE 什么值
vapply(yhooL, function(i) {strptime(index(i[1,]), format ="%Y-%m-%d")},double(1))
我也试过 POSIXct(1)
FUN.VALUE
和其他一些,真的是在猜测,但运气不佳。
这是因为 strptime
returns 一个 POSIXlt
对象,这很复杂。您最好使用 lapply
来挑选索引,然后使用 do.call 将它们组合起来。您也可以通过这种方式设置最终对象的 class,例如使用 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"
我有一个 xts 列表对象,我正在尝试获取列表中的日期,然后将其放入一个向量中,后者用作进一步处理中的 xts 索引。虽然我的数据包含时间戳,但出于此说明的目的,我从 google 中提取 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()
return 的所有十一个元素 $sec, $min...days, week of year 来获取每周第一行的所有日期。它没有按照我提供的格式给我日期。我想要实现的是 return 从该特定格式的第一行开始的日期。我不确定要传递给 vapply()
vapply(yhooL, function(i) {strptime(index(i[1,]), format ="%Y-%m-%d")},double(1))
我也试过 POSIXct(1)
FUN.VALUE
和其他一些,真的是在猜测,但运气不佳。
这是因为 strptime
returns 一个 POSIXlt
对象,这很复杂。您最好使用 lapply
来挑选索引,然后使用 do.call 将它们组合起来。您也可以通过这种方式设置最终对象的 class,例如使用 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"