在 R 中循环遍历日期会丢失格式
Looping through date in R loses format
这让我很沮丧。即使使用 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"
但是,如果我尝试遍历年份(为我的数据集中的每一年创建一个单独的图):我丢失了年份的格式,并且必须重新转换数据
for (yr in yearrange) { show(yr) }
#[1] 1325376000
#[1] 1356998400
#[1] 1388534400
#[1] 1420070400
如果我循环指定索引,我会返回日期对象:
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"
有没有不使用 foreach
的简单方法来避免索引选项,或者这是唯一的方法?
试试这个
for (yr in as.list(yearrange)) { show(yr) }
我认为 for (yr in yearrange)
将 yearrange
强制转换为矢量,而 POSIXct
不是矢量强制转换的受支持类型之一。
lapply
好像没有同样的问题,例如:
for (x in yearrange) plot(1, main=x)
#Main title = 1420070400
lapply( yearrange, function(x) plot(1, main=x) )
#Main title = 2015-01-01
这让我很沮丧。即使使用 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"
但是,如果我尝试遍历年份(为我的数据集中的每一年创建一个单独的图):我丢失了年份的格式,并且必须重新转换数据
for (yr in yearrange) { show(yr) }
#[1] 1325376000
#[1] 1356998400
#[1] 1388534400
#[1] 1420070400
如果我循环指定索引,我会返回日期对象:
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"
有没有不使用 foreach
的简单方法来避免索引选项,或者这是唯一的方法?
试试这个
for (yr in as.list(yearrange)) { show(yr) }
我认为 for (yr in yearrange)
将 yearrange
强制转换为矢量,而 POSIXct
不是矢量强制转换的受支持类型之一。
lapply
好像没有同样的问题,例如:
for (x in yearrange) plot(1, main=x)
#Main title = 1420070400
lapply( yearrange, function(x) plot(1, main=x) )
#Main title = 2015-01-01