#r
#r
Вопрос:
У меня есть логический вектор do_it = c(FALSE, TRUE, FALSE, TRUE, TRUE)
Я хочу, чтобы истинные значения увеличивались на 1, а выходные данные должны быть c(0, 1, 0, 2, 3)
Ответ №1:
Вы можете взять cumsum
вектор и умножить его на себя, чтобы сохранить FALSE
значения равными 0.
do_it = c(FALSE, TRUE, FALSE, TRUE, TRUE)
cumsum(do_it) * do_it
#[1] 0 1 0 2 3
Вы также можете использовать replace
:
replace(cumsum(do_it), !do_it, 0)