2012-05-31 19 views
2

我有一定的開始時間和一週的指定日期。R中的一週中的明確日期

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

我想要的是找到匹配相應的星期幾的第一天。 (並希望在用戶如何輸入星期幾目標方面有點靈活)任何想法?我想象一個字符串查找表可能會起作用,但有一個更好的方法。

如果解決方案,可向vectorise獎勵積分....

回答

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" 
+0

太棒了!我認爲首先將目標截斷爲min(nchar(target))的變體將進行矢量化。 – Fhnuzoag