以R丢失格式循环播放日期

ber*_*roe 6 loops r date lubridate

这令我很沮丧.即使lubridate我在循环它们时也无法保持日期以保持其类型.例如:

require(lubridate)
yearrange = ymd(20110101) + years(seq(4))
yearrange
#[1] "2012-01-01 UTC" "2013-01-01 UTC" "2014-01-01 UTC" "2015-01-01 UTC"
class(yearrange)
#[1] "POSIXct" "POSIXt" 
Run Code Online (Sandbox Code Playgroud)

但是,如果我试图循环多年(在我的数据集中为每年创建一个单独的图):我丢失了年份的格式,并且必须重新投射数据

for (yr in yearrange) { show(yr) }
#[1] 1325376000
#[1] 1356998400
#[1] 1388534400
#[1] 1420070400
Run Code Online (Sandbox Code Playgroud)

如果我循环指定索引,我会返回日期对象:

for (i in seq(length(yearrange))) { show(yearrange[i]) }
#[1] "2012-01-01 UTC"
#[1] "2013-01-01 UTC"
#[1] "2014-01-01 UTC"
#[1] "2015-01-01 UTC"
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以避免索引选项,而不使用foreach,或者这是唯一的方法吗?

cry*_*111 7

试试这个

for (yr in as.list(yearrange))  { show(yr) }
Run Code Online (Sandbox Code Playgroud)

我认为for (yr in yearrange)强制yearrange转换为矢量,POSIXct而不是矢量强制转换为支持的类型之一.