这个问题要求"前一个日历周的星期一".我们在下面假设这意味着您希望在输入日期之前或之前的星期一.
请注意,使用"Date"class 会更好,因为"Date"不需要时间,类没有时区,因此可以避免与"POSIXt"类相关的潜在时区错误.
nextfri在动物园里有 动物插图,动物园quickref晕图,我们可以使用它作为类似功能的基础.我们将这些更改(1)ceiling替换为floor,(2)5(星期五)替换为1(星期一)和(3)我们添加origin=参数to as.Date- 如果加载动物园,则提供默认原点,因此origin=参数可以是可选的省略.
此函数仅使用基数R并进行矢量化.它接受一个"Date"类向量,并"Date"在相应的输入日期或之前返回星期一的日期类向量.
lastmon <- function(x) 7 * floor(as.numeric(x-1+4)/7) + as.Date(1-4, origin="1970-01-01")
Run Code Online (Sandbox Code Playgroud)
例如,
> lastmon(as.Date(c("2016-01-15", "2016-01-11")))
[1] "2016-01-11" "2016-01-11"
Run Code Online (Sandbox Code Playgroud)
该lastmon功能可以简单地简化为:
lastmon2 <- function(x) x - as.numeric(x-1+4)%%7
Run Code Online (Sandbox Code Playgroud)
注意:此处,此处,此处和此处还可以看到SO答案,以获得更多用途nextfri或其变体.