2014-06-17 4 views
0

2 개의 벡터가 있습니다. 벡터 "v"는 프로세스가 초 단위로 시작될 때를 나타냅니다. 벡터 u는 벡터 u에서 처리 시간이 얼마나되는지 보여줍니다.for 루프의 길이가 0 인 인수 R

각 초마다 얼마나 많은 프로세스가 작동 하는지를 나타내는 벡터를 생성하고 싶습니다. 그래서이 장난감 예제 : 두 번째 0에서 시작하는 벡터 "total"을 생성하고 (벡터의 끝을 무시하지 않음) 두 번째 프로세스에서 몇 개의 프로세스가 작동하는지 각 위치에 저장합니다. 예를 들어, 벡터의 첫 번째 위치 (시간 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)을합니까? 때로는 오류가 발생할 수 있습니다. (문서를 링크 된 참조) – Llopis

답변

0

이 경우 : 대신 seq.int을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

그것은 workded! (더 많거나 적음) 이제 문제는 "오류 : '에서'길이가 1이어야합니다."입니다. 나는 그것을 확인하고 from 'from'길이가 1 인 경우 --- length (v [i])! = 1) -> 모두 거짓입니다. 나는 코드를 함수로 사용했다. 이제는 반복 작업 대신에 노력했습니다 .. 다 감사합니다. – user3607895

+0

나는 실수를 보았다 ... 나는 함수로 그것을 사용하고 있었고 함수에 좋은 변수를주지 못했다 ... TT – user3607895

+0

음 ... 나는 이것이 낚시라는 것을 알고 있지만 답을 받아 들여야한다. 당신을 위해 일 했어요. 감사. – asb