2012-05-31 4 views
2

나는 특정 시작 시간과 지정된 요일을 가지고 있습니다.주의 요일 명확화 R

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

내가 원하는 것은 시작 다음에 해당 요일과 일치하는 첫날을 찾는 것입니다. (그리고 사용자가 요일을 입력하는 방법에 대해 다소 융통성이 있기를 바랍니다.) 어떤 생각입니까? 문자열 조회 테이블이 작동한다고 상상해보십시오.하지만 더 깔끔한 방법이 있어야합니다.

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)))] 
} 

:이 솔루션은 벡터화하기 위해 할 수있는 경우

보너스 포인트 ....

답변

2

내가 여기 (내가 할 수 있는지 확실하지 않습니다) 아직이 벡터화했지만하지 않은는 시도이다 하루의 길이 또는 대문자로 된 약어를 ​​허용해야합니다. 사용 방법 :

> find_day(start,"TUE") 
[1] "1970-01-20" 
> find_day(start,"friday") 
[1] "1970-01-16" 
+0

위대한! 나는 목표를 처음부터 끝까지 잘리는 변형 (nchar (target))이 벡터화 될 것이라고 생각한다. – Fhnuzoag