2016-10-07 3 views
1

내가 반복하려는 벡터에 벡터까지입니다반복 n 번째 요소

> num_times 
    [1] 6 6 6 6 5 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
[33] 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 12 6 6 6 6 6 6 6 12 6 6 6 6 6 6 
[65] 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 12 6 
[97] 6 6 12 6 6 6 6 6 6 6 6 12 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 6 6 
[129] 6 12 6 6 6 6 6 6 

내가 사용 :

> months2014 
[1] "07" "08" "09" "10" "11" "12" 

나는 그것이 n 번째 값을 정의이 벡터를 기반으로 반복합니다 이 루프는 아래 출력을 얻습니다 :

for (i in num_times) 
    print(months2014[1:i]) 

[1] "07" "08" "09" "10" "11" "12" 
[1] "07" "08" "09" "10" "11" "12" 
[1] "07" "08" "09" "10" "11" "12" 
[1] "07" "08" "09" "10" "11" "12" 
[1] "07" "08" "09" "10" "11" ## repeated upto the 5th element 
[1] "07" "08" "09" "10" "11" "12" 
[1] "07" "08" "09" "10" "11" "12" 
[1] "07" "08" "09" "10" "11" ## repeated up to the 6th element 

num_times 벡터를 보면, 또한 12가 있습니다. 결과 :

[1] "07" "08" "09" "10" "11" "12" NA NA NA NA NA NA 

months2014에는 6 개의 요소 만 있으므로 NAs를 얻습니다.

1) 어떻게 루프 출력을 저장합니까 : 나는 세 가지 질문이

[1] "07" "08" "09" "10" "11" "12" "07 "08" "09" "10" "11" "12" 

: 나는 실제로 다시 시작하고이 같은 출력을 얻을까요? 빈 벡터를 만들고 결과를 그 안에 넣어 봤지만 작동하지 않았습니다.

temp_vec <- c() 
for (i in num_times) 
    temp_vec <- print(months2014[1:i]) 

2) 어떻게 수정합니까?

3) 더 나은 방법이 있어야합니까? 이 테스트 후에

+2

아마'sapply (NUM_TIMES , function (x) rep (months2014, length.out = x))' – Haboryme

답변

4

작동 같다 : 그것은리스트를 출력

sapply(num_times,function(x) rep(months2014,length.out=x) 

num_times의 값이 months214의 길이보다 큰 경우, 시퀀스 반복 :

[[1]] 
[1] "07" "08" "09" "10" "11" "12" 

[[2]] 
[1] "07" "08" "09" "10" "11" "12" 

[[3]] 
[1] "07" "08" "09" "10" "11" "12" 

[[4]] 
[1] "07" "08" "09" "10" "11" "12" 

[[5]] 
[1] "07" "08" "09" "10" "11" 

[[6]] 
[1] "07" "08" "09" "10" "11" "12" "07" "08" "09" "10" "11" "12" 
+0

- 루프 대신에 apply를 사용하여 NA 제거. 감사 ! 문자를 – vagabond

+2

으로 변환하기 위해'c (unlist (sapply (num), (x) rep (months2014, length.out = x))'를 추가했습니다. OP가 벡터 출력을 필요로한다면, 또 다른 옵션은'months2014 [sequence num_times)]' – akrun