Сначала вы получаете минимум which
, чтобы найти сначала 0
.После этого проверьте наличие 100
и замените его на 0
.
Давайте попробуем с небольшой выборкой:
n <- 20
a <- round(n/2)
b <- round(a/4)
set.seed(1)
x <- rep(1, n)
x[sample(1:a, b, FALSE)] <- 0
x[18] = 100 #Change 18th element as 100
x
#[1] 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1
# Index of first 0
idx_0 <- min(which(x==0))
x[idx_0:length(x)] <-
ifelse(x[idx_0:length(x)]==100, 0 , x[idx_0:length(x)])
# Modified x
x
# [1] 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
Отредактировано: Основано на отзывах от OP
.Цель состоит в том, чтобы обновить следующие n
(скажем, 10) значения.
idx_0 <- min(which(x==0))
x[idx_0:min((idx_0+10),length(x))] <- 0 #Update next 10 values with 0
x
#[1] 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 100 1 1