В качестве входных данных ваша функция должна принимать вектор 0 и 1;
Каждый раз, когда вы видите последовательность 1 с в данных, вам нужно увеличить количество детей на 1;
Будьте осторожны с двумя последующими последовательностями 1, где разница между ними меньше 5 (т. Е. Если между ними меньше 5 0, то это один и тот же дочерний элемент, а не новый дочерний элемент);
Чтобы помочь вам, социальный планировщик приводит несколько примеров того, что ваша функция должна возвращать:
#Input: c(1,1,1,1,0,0,0,0)
#Output: 1 1 1 1 1 1 1 1
#Input: c(0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1)
#Output: 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2
#Input: c(0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,1)
#Output: 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
Функции, которые могут быть полезны:
diff()
cumsum()
which()
rle()
Я не совсем понимаю, как подойти к вопросу, мои мысли по этому поводу используют функцию diff после cumsum, поскольку это поможет мне выдержать ряд 1 с, но в этом сценарии я теряю длину вектора (это, очевидно, становится короче) также #rle$lenght
, кажется, помогает мне обнаружить пробелы длиной 5 или более, чтобы превратить 1 с в 2 с. Извините за этот вопрос я только начинающий