我正试着找出最近的星期天到今天。
我今天的定义是:
dt <- as.Date("2014-06-04")我可以通过以下方式找到最后一个星期天:
dt - as.POSIXlt(dt)$wday
[1] "2014-06-01"我可以通过以下方式找到下一个星期天:
dt + as.POSIXlt(dt)$wday
[1] "2014-06-07"不确定为什么以下内容不起作用:
ifelse(as.POSIXlt(dt)$wday <= 3,
dt - as.POSIXlt(dt)$wday,
dt + as.POSIXlt(dt)$wday)
[1] 16222我得到了一个号码:16222而不是约会。
下列每一项声明都按预期工作:
as.POSIXlt(dt)$wday
class(as.POSIXlt(dt)$wday)
as.POSIXlt(dt)$wday <= 3有什么主意吗?
发布于 2014-06-04 20:20:33
看来,ifelse返回一个向量并从日期中剥离"POSIX“类。为什么不做呢
dt + ifelse(as.POSIXlt(dt)$wday <= 3, -1, 1) * as.POSIXlt(dt)$wday而不是。
发布于 2014-06-04 20:21:21
另一种解决方案:通过调用类属性(例如:
structure(ifelse(as.POSIXlt(dt)$wday <= 3,
dt - as.POSIXlt(dt)$wday,
dt + as.POSIXlt(dt)$wday), class="Date")发布于 2014-06-04 20:51:46
这里不需要使用ifelse,经典的if/else将完成以下工作:
if(as.POSIXlt(dt)$wday <= 3) dt - as.POSIXlt(dt)$wday else dt + as.POSIXlt(dt)$wday
[1] "2014-06-01"或者更简单:
wday <- as.POSIXlt(dt)$wday
dt + if(wday<= 3) -wday else wdayhttps://stackoverflow.com/questions/24046759
复制相似问题