2

我有一个特定的开始时间和一周中的指定日期。

start = as.POSIXct(1234567, origin = "1970-1-1")
format(start, format = "%A %c")
target1 = "TUE"
target2 = "Wednesday"

我想要的是在开始之后找到与一周中相应日期匹配的第一天。(希望对于用户如何输入星期几目标有点灵活)有什么想法吗?我想字符串查找表可能会起作用,但必须有一种更简洁的方法。

如果解决方案可以矢量化,则可以加分......

4

1 回答 1

2

我还没有尝试过矢量化(不确定是否可以),但这是一个尝试:

find_day <- function(start,target){
    target <- tolower(target)
    next_week <- as.Date(start) + 1:7
    next_week[match(target,substr(tolower(weekdays(next_week)),1,nchar(target)))]
}

它应该接受一天的任何长度或大写的缩写。如何使用它:

> find_day(start,"TUE")
[1] "1970-01-20"
> find_day(start,"friday")
[1] "1970-01-16"
于 2012-05-31T11:51:33.413 回答