2014-02-10 6 views
3

мне нужно использовать rep() и seq(), чтобы получить следующий вектор:Итерация чисел с использованием SEQ() и повторения()

1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 

Обычно я бы просто использовать for заявления для достижения этой цели, но я ограничен из используя это и можете использовать только rep() и seq() для этого векторного изображения.

+4

Является ли это проблемой домашнее задание? – Arun

+0

Это не проблема домашней работы, нет. Я просто запутался в том, как это возможно, без увеличения цикла. – turner

+0

Подсказка: подумайте о построении '1: 5 5-кратного' и добавлении остальных (здесь вы можете проверить' каждый' аргумент 'rep') соответствующим образом. – Arun

ответ

6
> 1:5 + rep(0:4, each=5) 
[1] 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 
+1

Это кажется самым простым методом для меня. – thelatemail

+0

Хотя я должен включать команду seq() в команду, это легко достигается, переключая «1: 5» на «seq (1, 5)», что также хорошо дополняет параметры, спасибо! – turner

+0

@turner да, ты прав. Просто пошел за коротким здесь. Cheers –

1

Один лайнер,

do.call(c,sapply(1:5,seq,length.out=5,simplify=FALSE)) 

Или еще проще,

rep(seq(5),each=5)+seq(5)-1 
+0

Удивление, если есть способ сделать это без сложения и вычитания, но это служит моим целям, спасибо! – turner

+0

@turner, как первый однострочный? нет "+" или "-"; но и нет «rep» :) –

Смежные вопросы