Условное утверждение в функции sum () функции R - PullRequest
0 голосов
/ 07 июня 2018

Я начал изучать R и получил фрагмент кода, в котором оператор выглядит следующим образом:

if(sum(C == C[i]) == 1)# C is simply a vector and i is index of a value in this vector which the user specifies in an arguement.

как вы можете передать условный оператор в качестве аргумента функции, также объясните значение этогозаявление.Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Давайте рассмотрим пример, чтобы понять

Рассмотрим 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...