2015-09-07 3 views
0

Как создать следующий вектор?Создать вектор = (0 1 1 0 0 0 1 1 1 1)?

vec = (0 1 1 0 0 0 1 1 1 1) 

Я уже пробовал rep(0:1,times=1:4), который работает с другими, чем 0 числами, но не здесь ... =

+1

'rep (0: 1,2), times = 1: 4)' – Heroka

+0

не случайно, его один 0, два 1, три 0, для 1 ... – letter

+2

или 'rep (rep (0: 1, length.out = 4), раз = 1: 4) ' –

ответ

4

Для повторения, «времен» и «х» нужно, чтобы иметь одинаковую длину (если длина 'times' равно 1). Поэтому в этом случае вам нужно создать вектор «x» с длиной 4.

> rep(rep(0:1,2),times=1:4) 
[1] 0 1 1 0 0 0 1 1 1 1 
4

Вот общее решение:

> increp=function(n){rep(0:(n-1), times=1:n) %% 2} 
> increp(4) 
[1] 0 1 1 0 0 0 1 1 1 1 
> increp(3) 
[1] 0 1 1 0 0 0 
> increp(2) 
[1] 0 1 1 
> increp(6) 
[1] 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 

Он генерирует 0,1,1,2,2,2,3,3,3 до нужной длины, а затем просто преобразует в 0/1 на основе четным или нечетным.

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