Давайте рассмотрим пример, чтобы понять
Рассмотрим C
как числовой вектор от 1 до 10, и давайте возьмем i
как 3
C <- 1:10
i <- 3
Итак, когда мы делаем
C == C[i]
#[1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
он сравнивает каждый элемент C
с C[i]
, который равен 3, и возвращает соответствующий логический вектор, который имеет TRUE
только третий индекс.
Когда мы sum
этот логический вектор возвращаем счетчик всех TRUE
(как он считает FALSE
как 0 и TRUE
как 1) значений, которые в этом случае равны 1
sum(C == C[i])
#[1] 1
, который затем сравнивается с 1 снова, чтобы убедиться, что есть только один C[i]
в C
sum(C == C[i]) == 1
#[1] TRUE
Это не удастся, если мы повторим числа в C
.Например,
C <- c(1:10, 3) #Adding an extra 3 in the end
C
#[1] 1 2 3 4 5 6 7 8 9 10 3
i <- 3
sum(C == C[i]) == 1
#[1] FALSE
В нижней строке указано условие TRUE
, если C[i]
встречается только один раз в C
.