2012-12-21 41 views
-2

在我的R程序中,我有一個主循環,需要花費大量的時間才能完成。正因爲如此,我想創建一個警告對話框,它提供了比我現在更準確的估計值。目前在迴路中它呼叫如何創建更準確的運行時間估計

if (loopIteration == 1) { 
    sampleTime1 <- sys.time(); 
} 

if (loopIteration == 2) { 
    sampleTime2 <- sys.time(); 
    timeEstimate <- loopLength*difftime(sampleTime2, sampleTime1); 
    print(timeEstimate); 
} 

不幸的是,這個估計是不準確的約75%。我怎樣才能讓這個更準確?

+0

什麼是'SampleTime2'? – mnel

+0

推測這兩個條件是'loopIteration == 1'是一個錯字? – joran

回答

1

您似乎正在使用另一個未命名包中的函數。基函數中的函數名稱是system.time,它報告的第三個元素是執行表達式所用的時間:

> system.time({for(i in 1:1000000) {NULL} })[3] 
elapsed 
    0.2 
+0

它來自R基礎軟件包http://rss.acs.unt.edu/Rdoc/library/base/html/difftime.html – user1876508

+0

我認爲迪文正在談論您正在使用的sys.time函數。不是difftime函數。有一個Sys.time函數。我的猜測是你的代碼不運行,但也許Sys.time中的第一個不需要大寫。 –

+2

那麼,如果我們正在討論基函數,'base :: Sys.time'中的「S」肯定是_does_需要大寫。那麼,我們究竟在談論什麼呢?我們是否可以有一些運行的實際代碼,並且有些結果可以證明正在聲稱的內容? –