2014-06-17 29 views
0

我有2個向量的數字。矢量「v」顯示進程何時以秒開始。向量u顯示向量u中的過程有多長時間。for循環中的長度爲0的參數R

我想爬行向量說明每秒有多少過程正在工作。所以這個玩具的例子:我創建了一個矢量「總數」,它從第二個0開始(永遠不要結束矢量),我將在每個位置保存多少個進程在那個時間內工作。例如,在向量的第一個位置(時間0),我的代碼表示我將有1個進程。

v <- c(0,1,2,3,4,5) 
u <- c(1.2, 0.1, 1.2, 1, 0.5, 0) 
j = 1 
total <- rep(0, times = 10) 
begin <- integer() 
end <- integer() 
repeat{ 
    begin<- v[j] +1 
    end <- begin + u[j]%/%1 
    for(i in begin:end){ 
    if(total[i] == 0){ total[i] <-1} 
    else total[i] = total[i] +1 
    } 
    if(j ==length(v)) break 
    j = j+1 
} 

total 
[1] 1 2 1 2 2 1 0 0 0 0 

我得到這個錯誤(不在這裏,在現實情況下):

Error in begin:end : argument of length 0 

(我試過使用,在情況開始=結束),但「對」應爲只有一個位置工作。

會發生什麼?

+0

當長度爲0時,我會打印開始和結束,但不知道實際代碼,它很難說明它是什麼。也許問題在於最終的定義。你爲什麼要做['%/%'](http://stat.ethz.ch/R-manual/R-patched/library/base/html/Arithmetic.html)?有時它可能會產生錯誤。 (見de文檔鏈接) – Llopis

回答

0

在這種情況下,您可以使用seq.int而不是:。例如:

for (a in seq.int(from=3, to=3)) {             
    print(a) 
} 
[1] 3 
+0

它工作! (或多或少)現在問題是「錯誤:」從'必須是長度1「。我檢查它,所有'從'獲取的值是長度爲1 ---如果(長度(v [i])!= 1) - >全部爲假。我使用的代碼作爲一個功能。現在我嘗試了,而不是重複和它的工作..謝謝你的一切。 – user3607895

+0

我看到了錯誤...我用它作爲一個函數,我沒有給功能的好變量... TT – user3607895

+0

嗯...我知道這是釣魚,但你應該接受答案,如果它爲你工作。謝謝。 – asb