2016-09-16 3 views
1

xts 개체의 마지막 행 날짜가 현재 날짜와 같은지 테스트하고 싶습니다. 내 문제는 그 last(index(obj))Sys.Date() 기능을하지 않는 시간대 정보를 반환합니다.R에서 TZ 정보없이 Index()를 포맷하는 방법은 무엇입니까?

> last(index(obj)) 
[1] "2016-09-16 UTC" 

> Sys.Date() 
[1] "2016-09-16" 

내가 가지고있는 해결 방법은 paste0Sys.Date()Sys.timezone()에이지만 우아하지. 더 나은 해결책이 있습니까?

# Test if we already have data 
    if (last(index(obj)) == paste0(Sys.Date(), " ", Sys.timezone())) { 

    next 

    } 

* EDIT *

상세 정보 :

> str(obj) 
An ‘xts’ object on 2013-06-01/2016-09-16 containing: 
    Data: num [1:1204, 1:6] NA NA NA NA NA NA NA NA NA NA ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:6] "Open" "High" "Low" "Close" ... 
    Indexed by objects of class: [POSIXct,POSIXt] TZ: UTC 
    xts Attributes: 
List of 1 
$ dateFormat: chr "Date" 

감사합니다, index(obj)POSIXct 클래스 객체이기 때문에

+1

'dateFormat' 속성은''Date "'인데 인덱스 클래스는'POSIXct'입니다. 어떻게'obj'를 만들었습니까? –

답변

3

시간대가 인쇄됩니다. index(obj)의 출력을 Sys.Date()의 출력과 비교하려면 index의 출력이 Date 클래스 개체인지 확인해야합니다.

1) 직접 Dateindex의 출력을 변환 :이 수행하는 몇 가지 방법이 있습니다

as.Date(last(index(obj))) == Sys.Date() 

2) objDate의 전체 인덱스를 변환은 (인덱스 클래스는 현재 POSIXct이므로주의) :

indexClass(obj) <- "Date" 
last(index(obj)) == Sys.Date() 
+0

Ulrich, 당신이 제공하는 두 번째 솔루션은 저에게 완벽합니다. – Florent

0

실제로 문제는 내 개체의 POSIXct 시간 형식에서 비롯됩니다. Date으로 as.Date(last(index(obj)))으로 변환하면 문제가 해결됩니다.