Когда мы сравниваем b
с вектором, используя ==
, мы сравниваем поэлементно, поэтому b[1]
сравнивается с 1, b[2]
сравнивается с 4 и так далее. Поскольку length(c(1,4,6,8,9))
меньше length(b)
, эти значения перерабатываются для соответствия длине b
.
b == c(1,4,6,8,9)
#[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Предупреждающее сообщение: In b == c (1, 4, 6,8, 9): большая длина объекта не кратна короткой длине объекта
Для сравнения нескольких значений нам нужно %in%
b %in% c(1,4,6,8,9)
#[1] TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE
, чтобы мы могли использовать replace
like
replace(b,b %in% c(1,4,6,8,9),c(0, 0, 0, 0, 0))
#[1] 0 2 3 0 5 0 7 0 0
Однако replace
может принимать вектор позиций, поэтому мы можем напрямую сделать
replace(b, c(1,4,6,8,9), 0)
#[1] 0 2 3 0 5 0 7 0 0