2012-01-12 2 views
2

데이터를 수집하는 연속 프로세스가 있으며 매 시간마다 수집 된 데이터를 쓰고 싶습니다. 간단히 말해서, 어떻게 조건부로 .Rdata 파일에 매시간 데이터를 저장할 수 있습니까?매 시간마다 R로 파일 저장

컨텍스트의 경우 데이터를 목록으로 수집하고 목록 개체를 시간별 파일로 저장하고 목록을 제거한 다음 다시 작성하고자합니다.

나는 아래의 코드를 시도했지만 작동하지 않았다 :

if (identical(format(Sys.time(), "%M:%S"), "00:00")) { 
     save(twt, file=fname_r) 
} 

어떤 도움이 많이 이해할 수있을 것이다.

답변

5

잘못된 방향으로이 문제가 발생할 수 있습니다. 모든 것이 R에 대한 직업은 아닙니다 (R은 실제로 단일 스레드 임) 주어진 일정은 항상 핵심 운영 체제 작업이었습니다. cron을 사용하거나 노스 웨스트의 시장을 선도하는 OS를 사용중인 경우 일정 옵션을 살펴보십시오. 그런 다음 사소한 Rscript 파일을 설정하십시오.

아스키 또는 이진 형식으로 결과를 수집하고 어딘가에 덤프 할 연속 수집 프로세스를 실행하십시오. 그런 다음 가장 최근의 덤프를 수집하는 시간제 작업을하십시오. 스케쥴링을 생각한 후에 R로 그렇게 할 수 있습니다. 시간이 경과 여부를 결정하는 좁은 문제에 관해서는

, 당신은 tcltk2 패키지의 tclTaskSchedule 기능을 사용할 수 R에 예약을하려면

then <- Sys.time() 
# ... stuff happens ... 
now <- Sys.time() 
if (as.numeric(difftime(now, then, unit="mins") > 60) { 
    # .. do stuff 
} 
+0

Hi Dirk, chiming in에 감사드립니다. 필자는 스크립트를 일정 잡기를 원하지만, 스크립팅 R 및 우분투에 익숙하지 않은 나는 이것을 디버깅 할 수있는 해킹 방법으로 공격하려고합니다. 나는 스크립트를 항상 실행 상태로 유지하고 데이터 객체를 시간당 단위로 저장하는 데 관심이 있습니다. 모든 코드는 대단히 감사하겠습니다. 베스트. – Btibert3

+0

위대한, 나는 날짜에 대해 정박에 대해 생각하지 않았다, 감사합니다. – Btibert3

5

같은 것을 사용합니다. 태스크 실행, 실행 태스크 (표현식/함수)와 태스크 재실행 사이에 얼마나 기다려야하는지 알려주고, 백그라운드에서 태스크를 정기적으로 실행합니다. 두 프로세스가 서로 간섭하지 않도록주의하십시오. 개체를 저장하는 작업이 다른 개체가 동일한 개체를 업데이트하는 것과 동시에 실행되는 경우 개체의 일부만 저장되거나 저장된 내용이 giberish 인 기회가 있습니다. 따라서 데이터 객체를 저장하기 전에 데이터 객체가 완료되었는지 확인할 수있는 방법이 필요합니다.

+0

끝내 주셔서 감사합니다! – Btibert3

+0

이것은 모든 종류의 것들에 유용한 훌륭한 대답입니다. – Iterator

관련 문제